summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-04-09 15:43:10 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-04-09 15:43:10 +0000
commit0528b12ed4eeb46e373452fefe4ebe4f31648b73 (patch)
tree4948486f7652063bb45bdb3b1b04d3a1dd7336d6 /src/compiler
parentf218c00988d90f5679b7850c87ca30529183f89e (diff)
downloadscala-0528b12ed4eeb46e373452fefe4ebe4f31648b73.tar.gz
scala-0528b12ed4eeb46e373452fefe4ebe4f31648b73.tar.bz2
scala-0528b12ed4eeb46e373452fefe4ebe4f31648b73.zip
Fixed retyping of singleton types, replacing in...
Fixed retyping of singleton types, replacing invalid symbols by their updated symbols, as was done for type refs.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala1
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Duplicators.scala9
2 files changed, 9 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index 25943af964..ad58ad6758 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -1087,7 +1087,6 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
val fun = Apply(Select(This(symbol.owner), original),
makeArguments(original, vparamss.head))
- println(" ** " + symbol.tpe.finalResultType + " : " + symbol.owner.thisType.memberType(symbol).finalResultType)
maybeCastTo(symbol.owner.thisType.memberType(symbol).finalResultType,
symbol.owner.thisType.memberType(original).finalResultType,
fun)
diff --git a/src/compiler/scala/tools/nsc/typechecker/Duplicators.scala b/src/compiler/scala/tools/nsc/typechecker/Duplicators.scala
index 7ca2ff81bb..fc2f71f31b 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Duplicators.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Duplicators.scala
@@ -85,6 +85,15 @@ abstract class Duplicators extends Analyzer {
typeRef(mapOver(pre), newsym, mapOverArgs(args, newsym.typeParams))
} else
super.mapOver(tpe)
+
+ case SingleType(pre, sym) =>
+ val sym1 = updateSym(sym)
+ if (sym1 ne sym) {
+ log("fixing " + sym + " -> " + sym1)
+ singleType(mapOver(pre), sym1)
+ } else
+ super.mapOver(tpe)
+
case _ =>
super.mapOver(tpe)
}