diff options
author | Paul Phillips <paulp@improving.org> | 2012-08-31 16:18:42 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-08-31 16:57:22 -0700 |
commit | 1d70cacca1864ae536e2e1d31d117d43dbc92c24 (patch) | |
tree | c12372ce5f667d1551ad42fc3094286034035f2d /src/compiler/scala/tools/nsc/typechecker/Typers.scala | |
parent | 7e4d8a42ff87224a1063449f93f2975bda0d7c01 (diff) | |
download | scala-1d70cacca1864ae536e2e1d31d117d43dbc92c24.tar.gz scala-1d70cacca1864ae536e2e1d31d117d43dbc92c24.tar.bz2 scala-1d70cacca1864ae536e2e1d31d117d43dbc92c24.zip |
Hardening specialization and others.
Cleaned up some logic which has become unreasonably
circuitous over time. Gave "mkSuperSelect" an accurate
name (it's now "mkSuperInitCall".) Put in better logging
for spotting OverloadedTypes which should not be.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/Typers.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index f8826dc27f..d2e6616f38 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -4504,25 +4504,18 @@ trait Typers extends Modes with Adaptations with Tags { */ def typedSelect(tree: Tree, qual: Tree, name: Name): Tree = { val t = typedSelectInternal(tree, qual, name) + // Checking for OverloadedTypes being handed out after overloading + // resolution has already happened. if (isPastTyper) t.tpe match { case OverloadedType(pre, alts) => if (alts forall (s => (s.owner == ObjectClass) || (s.owner == AnyClass) || isPrimitiveValueClass(s.owner))) () - else { - val msg = - s"""|Select received overloaded type during $phase, but typer is over. - |We are likely doomed to crash in the backend. - |$t has these overloads: - |${alts map (s => " " + s.defStringSeenAs(pre memberType s)) mkString "\n"} - |""".stripMargin - - if (context.reportErrors) - unit.warning(t.pos, msg) - else - Console.err.println(msg) - - if (settings.debug.value) - (new Throwable).printStackTrace - } + else if (settings.debug.value) printCaller( + s"""|Select received overloaded type during $phase, but typer is over. + |If this type reaches the backend, we are likely doomed to crash. + |$t has these overloads: + |${alts map (s => " " + s.defStringSeenAs(pre memberType s)) mkString "\n"} + |""".stripMargin + )("") case _ => } t |