diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-06-30 13:48:56 -0700 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2015-06-30 13:48:56 -0700 |
commit | c8fbc41631da0a860f749479a610312814c0e88f (patch) | |
tree | 4c9b6759469530454b95b3fd2ac600e1042941da /src/compiler | |
parent | 6ca8847eb5891fa610136c2c041cbad1298fb89c (diff) | |
parent | 4a61719c1a3b57b47aa65409e83b87cff39145d3 (diff) | |
download | scala-c8fbc41631da0a860f749479a610312814c0e88f.tar.gz scala-c8fbc41631da0a860f749479a610312814c0e88f.tar.bz2 scala-c8fbc41631da0a860f749479a610312814c0e88f.zip |
Merge pull request #4569 from retronym/ticket/6985
SI-6895 Test cases to explain the limitations in tcpoly inference
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala b/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala index 059981aa37..5f2643cb25 100644 --- a/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala +++ b/src/compiler/scala/tools/nsc/typechecker/TypeDiagnostics.scala @@ -309,6 +309,7 @@ trait TypeDiagnostics { // save the name because it will be mutated until it has been // distinguished from the other types in the same error message private val savedName = sym.name + private var postQualifiedWith: List[Symbol] = Nil def restoreName() = sym.name = savedName def modifyName(f: String => String) = sym setName newTypeName(f(sym.name.toString)) @@ -317,12 +318,12 @@ 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 def preQualify() = modifyName(trueOwner.fullName + "." + _) - def postQualify() = modifyName(_ + "(in " + trueOwner + ")") + def postQualify() = if (!(postQualifiedWith contains trueOwner)) { postQualifiedWith ::= trueOwner; modifyName(_ + "(in " + trueOwner + ")") } def typeQualify() = if (sym.isTypeParameterOrSkolem) postQualify() def nameQualify() = if (trueOwner.isPackageClass) preQualify() else postQualify() |