summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2015-06-30 13:48:56 -0700
committerAdriaan Moors <adriaan.moors@typesafe.com>2015-06-30 13:48:56 -0700
commitc8fbc41631da0a860f749479a610312814c0e88f (patch)
tree4c9b6759469530454b95b3fd2ac600e1042941da /src/compiler
parent6ca8847eb5891fa610136c2c041cbad1298fb89c (diff)
parent4a61719c1a3b57b47aa65409e83b87cff39145d3 (diff)
downloadscala-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.scala5
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()