summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/Constructors.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-05-08 20:42:27 +0000
committerPaul Phillips <paulp@improving.org>2009-05-08 20:42:27 +0000
commit8b030ca4844d6a0ad67f4b47f416a7af59bddea2 (patch)
tree88735d3f648db1def1dba7a1dea27940aa4dbad2 /src/compiler/scala/tools/nsc/transform/Constructors.scala
parent8100cc9f6d550c7275ab3a20e4b1e26621fcea6e (diff)
downloadscala-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.scala10
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)))