summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-05-20 14:05:17 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-05-20 14:05:17 +0000
commit293b70525e5d22e64af51d99aea6714b197aa052 (patch)
treec74f94771aaf4edda90ce8da227cdbb7d98984a8 /src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
parent4debc5bf1e89a8cb185fd7af1adf1c81c0e95e0c (diff)
downloadscala-293b70525e5d22e64af51d99aea6714b197aa052.tar.gz
scala-293b70525e5d22e64af51d99aea6714b197aa052.tar.bz2
scala-293b70525e5d22e64af51d99aea6714b197aa052.zip
Closed #3432.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
index b282f8fbd3..60634c467f 100644
--- a/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
+++ b/src/compiler/scala/tools/nsc/transform/SpecializeTypes.scala
@@ -570,6 +570,10 @@ abstract class SpecializeTypes extends InfoTransform with TypingTransformers {
normalizeMember(m.owner, m, outerEnv) flatMap { normalizedMember =>
val ms = specializeMember(m.owner, normalizedMember, outerEnv, clazz.info.typeParams)
// atPhase(currentRun.typerPhase)(println("normalizedMember.info: " + normalizedMember.info)) // bring the info to the typer phase
+ // interface traits have concrete members now
+ if (ms.nonEmpty && clazz.isTrait && clazz.isInterface)
+ clazz.resetFlag(INTERFACE)
+
if (normalizedMember.isMethod) {
val newTpe = subst(outerEnv, normalizedMember.info)
if (newTpe != normalizedMember.info) // only do it when necessary, otherwise the method type might be at a later phase already