From 140e57c6dea6e33a15c56afbd8a7e119b0b7e747 Mon Sep 17 00:00:00 2001
From: "Paolo G. Giarrusso"
Date: Sun, 26 Aug 2018 03:21:13 +0200
Subject: [PATCH] Fix #5007 (aka scala/bug#5063)
Based on scala/scala@bed3304bf86 and Nicolas' suggestion.
---
compiler/src/dotty/tools/dotc/typer/Implicits.scala | 1 +
tests/neg/t5063.scala | 3 +++
tests/untried/neg/t5063.check | 4 ----
tests/untried/neg/t5063.scala | 3 ---
4 files changed, 4 insertions(+), 7 deletions(-)
create mode 100644 tests/neg/t5063.scala
delete mode 100644 tests/untried/neg/t5063.check
delete mode 100644 tests/untried/neg/t5063.scala
diff --git a/compiler/src/dotty/tools/dotc/typer/Implicits.scala b/compiler/src/dotty/tools/dotc/typer/Implicits.scala
index feb6bc391a55..546cce74aaf7 100644
--- a/compiler/src/dotty/tools/dotc/typer/Implicits.scala
+++ b/compiler/src/dotty/tools/dotc/typer/Implicits.scala
@@ -552,6 +552,7 @@ trait Implicits { self: Typer =>
|| (from.tpe isRef defn.NothingClass)
|| (from.tpe isRef defn.NullClass)
|| !(ctx.mode is Mode.ImplicitsEnabled)
+ || from.isInstanceOf[Super]
|| (from.tpe eq NoPrefix)) NoMatchingImplicitsFailure
else {
def adjust(to: Type) = to.stripTypeVar.widenExpr match {
diff --git a/tests/neg/t5063.scala b/tests/neg/t5063.scala
new file mode 100644
index 000000000000..0566e90798f5
--- /dev/null
+++ b/tests/neg/t5063.scala
@@ -0,0 +1,3 @@
+class A {
+ super.+("") // error
+}
diff --git a/tests/untried/neg/t5063.check b/tests/untried/neg/t5063.check
deleted file mode 100644
index c6e553c1b5f6..000000000000
--- a/tests/untried/neg/t5063.check
+++ /dev/null
@@ -1,4 +0,0 @@
-t5063.scala:2: error: value + is not a member of AnyRef
- super.+("")
- ^
-one error found
diff --git a/tests/untried/neg/t5063.scala b/tests/untried/neg/t5063.scala
deleted file mode 100644
index 5b34b53fb7fc..000000000000
--- a/tests/untried/neg/t5063.scala
+++ /dev/null
@@ -1,3 +0,0 @@
-class A {
- super.+("")
-}