summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2008-02-22 13:24:21 +0000
committerMartin Odersky <odersky@gmail.com>2008-02-22 13:24:21 +0000
commitfc8593d4eb7858fb0213c7ad586feccbd5244616 (patch)
treed588e38fb246eddb342cc89d6c3d5009bc235d46
parent0c48c80ce9122ca765cd328bca210a985dc699dc (diff)
downloadscala-fc8593d4eb7858fb0213c7ad586feccbd5244616.tar.gz
scala-fc8593d4eb7858fb0213c7ad586feccbd5244616.tar.bz2
scala-fc8593d4eb7858fb0213c7ad586feccbd5244616.zip
another change wrt overriding vals to fix #530
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala12
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,