diff options
author | Martin Odersky <odersky@gmail.com> | 2008-02-22 13:24:21 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2008-02-22 13:24:21 +0000 |
commit | fc8593d4eb7858fb0213c7ad586feccbd5244616 (patch) | |
tree | d588e38fb246eddb342cc89d6c3d5009bc235d46 /src | |
parent | 0c48c80ce9122ca765cd328bca210a985dc699dc (diff) | |
download | scala-fc8593d4eb7858fb0213c7ad586feccbd5244616.tar.gz scala-fc8593d4eb7858fb0213c7ad586feccbd5244616.tar.bz2 scala-fc8593d4eb7858fb0213c7ad586feccbd5244616.zip |
another change wrt overriding vals to fix #530
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala index cadc90a957..48ef18ff04 100644 --- a/src/compiler/scala/tools/nsc/transform/Mixin.scala +++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala @@ -221,14 +221,16 @@ abstract class Mixin extends InfoTransform { */ def mixinTraitMembers(mixinClass: Symbol) { // For all members of a trait's interface do: + def isConcreteAccessor(member: Symbol) = + (member hasFlag ACCESSOR) && + (!(member hasFlag DEFERRED) || (member hasFlag lateDEFERRED)) def isOverridden(member: Symbol) = - member.overridingSymbol(clazz) != NoSymbol + isConcreteAccessor(member.overridingSymbol(clazz)) for (val member <- mixinClass.info.decls.toList) { - if ((member hasFlag ACCESSOR) && - (!(member hasFlag DEFERRED) || (member hasFlag lateDEFERRED))) { - if (isOverridden(member)) + if (isConcreteAccessor(member)) { + if (isOverridden(member)) { if (settings.debug.value) println("!!! is overridden val: "+member) - else { + } else { // mixin field accessors val member1 = addMember( clazz, |