summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala2
-rw-r--r--test/files/neg/t8892.check7
-rw-r--r--test/files/neg/t8892.scala2
3 files changed, 10 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala b/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
index 65dea3178b..5f2643cb25 100644
--- a/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala
@@ -318,7 +318,7 @@ trait TypeDiagnostics {
*/
def qualifyDefaultNamespaces() = {
val intersect = Set(trueOwner, aliasOwner) intersect UnqualifiedOwners
- if (intersect.nonEmpty) preQualify()
+ if (intersect.nonEmpty && tp.typeSymbolDirect.name == tp.typeSymbol.name) preQualify()
}
// functions to manipulate the name
diff --git a/test/files/neg/t8892.check b/test/files/neg/t8892.check
new file mode 100644
index 0000000000..5930be58c5
--- /dev/null
+++ b/test/files/neg/t8892.check
@@ -0,0 +1,7 @@
+t8892.scala:2: error: type mismatch;
+ found : B
+ required: C.this.B
+ (which expands to) String
+class C[B](x: B) extends A { def f: B = x }
+ ^
+one error found
diff --git a/test/files/neg/t8892.scala b/test/files/neg/t8892.scala
new file mode 100644
index 0000000000..f857e6f115
--- /dev/null
+++ b/test/files/neg/t8892.scala
@@ -0,0 +1,2 @@
+trait A { type B = String }
+class C[B](x: B) extends A { def f: B = x }