diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-04-09 15:43:10 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-04-09 15:43:10 +0000 |
commit | 0528b12ed4eeb46e373452fefe4ebe4f31648b73 (patch) | |
tree | 4948486f7652063bb45bdb3b1b04d3a1dd7336d6 /src/compiler | |
parent | f218c00988d90f5679b7850c87ca30529183f89e (diff) | |
download | scala-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.scala | 1 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Duplicators.scala | 9 |
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) } |