diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-05-04 09:34:58 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-05-04 09:34:58 +0000 |
commit | 6bc86b824867b9c0eaab79bcd798d05759a9167a (patch) | |
tree | dfeb8d57074267a851d365ec76fc6673b67a99ed /src | |
parent | df78ff25e3a4742579417db81bd22fa20b70d4ed (diff) | |
download | scala-6bc86b824867b9c0eaab79bcd798d05759a9167a.tar.gz scala-6bc86b824867b9c0eaab79bcd798d05759a9167a.tar.bz2 scala-6bc86b824867b9c0eaab79bcd798d05759a9167a.zip |
Fixed abstract overrides of specialized methods.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala index de10a777b0..d27aaba44b 100644 --- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala +++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala @@ -697,8 +697,8 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers { log("Added specialized overload for " + overriding.fullName + " in env: " + env) val om = specializedOverload(clazz, overridden, env) typeEnv(om) = env + concreteSpecMethods += overriding if (!overriding.isDeferred) { - concreteSpecMethods += overriding // if the override is a normalized member, 'om' gets the implementation from // its original target, and adds the environment of the normalized member (that is, // any specialized /method/ type parameter bindings) @@ -711,6 +711,10 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers { info(overriding) = Forward(om) log("typeEnv(om) = " + typeEnv(om)) om setPos overriding.pos // set the position of the concrete, overriding member + } else { + // abstract override + log("abstract override " + overriding.fullName + " with specialized " + om.fullName) + info(om) = Forward(overriding) } overloads(overriding) = Overload(om, env) :: overloads(overriding) oms += om |