diff options
author | Paul Phillips <paulp@improving.org> | 2009-05-08 20:42:27 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-05-08 20:42:27 +0000 |
commit | 8b030ca4844d6a0ad67f4b47f416a7af59bddea2 (patch) | |
tree | 88735d3f648db1def1dba7a1dea27940aa4dbad2 /src/compiler/scala/tools/nsc/transform/Constructors.scala | |
parent | 8100cc9f6d550c7275ab3a20e4b1e26621fcea6e (diff) | |
download | scala-8b030ca4844d6a0ad67f4b47f416a7af59bddea2.tar.gz scala-8b030ca4844d6a0ad67f4b47f416a7af59bddea2.tar.bz2 scala-8b030ca4844d6a0ad67f4b47f416a7af59bddea2.zip |
Further refinement of fix for #1960.
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/Constructors.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Constructors.scala | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala index 17dbe36a8d..31ef241ac8 100644 --- a/src/compiler/scala/tools/nsc/transform/Constructors.scala +++ b/src/compiler/scala/tools/nsc/transform/Constructors.scala @@ -261,13 +261,17 @@ abstract class Constructors extends Transform { // It would be better to mangle the constructor parameter name since // it can only be used internally, but I think we need more robust name // mangling before we introduce more of it. - val parentSymbols = - Map(( for (p <- impl.parents ; sym <- p.symbol.info.nonPrivateMembers) yield sym.name -> p ): _*) + val parentSymbols = Map((for { + p <- impl.parents + if p.symbol.isTrait + sym <- p.symbol.info.nonPrivateMembers + if sym.isGetter && !sym.isOuterField + } yield sym.name -> p): _*) // Initialize all parameters fields that must be kept. val paramInits = for (acc <- paramAccessors if mustbeKept(acc)) yield { - if ((parentSymbols contains acc.name) && !(acc.name startsWith "$outer")) + if (parentSymbols contains acc.name) unit.error(acc.pos, "parameter '%s' requires field but conflicts with %s in '%s'".format( acc.name, acc.name, parentSymbols(acc.name))) |