summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-02-11 17:03:22 +0000
committerPaul Phillips <paulp@improving.org>2009-02-11 17:03:22 +0000
commitbcb3384b792b50dd256e407dbe60f3862611cf8f (patch)
treec58d5e8ef8b7687bc007bb8b4b1a2c364acefc9d /src
parentced34334189f3d62c4883a50268bda436aefffbd (diff)
downloadscala-bcb3384b792b50dd256e407dbe60f3862611cf8f.tar.gz
scala-bcb3384b792b50dd256e407dbe60f3862611cf8f.tar.bz2
scala-bcb3384b792b50dd256e407dbe60f3862611cf8f.zip
fixed bug #1535, added test case
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index ce0d3c651d..e1a2e2f916 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -734,14 +734,18 @@ abstract class Mixin extends InfoTransform {
def isField(sym: Symbol) =
sym.hasFlag(PRIVATE) && sym.isTerm && !sym.isMethod
- var fields =
- for (sc <- clazz.info.parents;
- field <- sc.decls.elements.toList
- if !sc.typeSymbol.isTrait
- && field.owner != clazz
- && (settings.checkInit.value
- && isField(field)
- || field.hasFlag(LAZY))) yield field
+ def needsBitmapField(sc: Type, field: Symbol) =
+ !sc.typeSymbol.isTrait &&
+ field.owner != clazz &&
+ (settings.checkInit.value && isField(field) ||
+ field.hasFlag(LAZY))
+
+ // parents != baseClasses.map(_.tpe): bug #1535
+ val fields = for {
+ sc <- clazz.info.baseClasses.map(_.tpe)
+ field <- sc.decls.elements.toList
+ if needsBitmapField(sc, field)
+ } yield field
if (settings.debug.value) log("Found inherited fields in " + clazz + " : " + fields)
fields.length