summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/Typers.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-08-31 16:18:42 -0700
committerPaul Phillips <paulp@improving.org>2012-08-31 16:57:22 -0700
commit1d70cacca1864ae536e2e1d31d117d43dbc92c24 (patch)
treec12372ce5f667d1551ad42fc3094286034035f2d /src/compiler/scala/tools/nsc/typechecker/Typers.scala
parent7e4d8a42ff87224a1063449f93f2975bda0d7c01 (diff)
downloadscala-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.scala25
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