diff options
author | Martin Odersky <odersky@gmail.com> | 2009-12-18 15:18:44 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-12-18 15:18:44 +0000 |
commit | ce4572ca49c2ba0db6b02ffffdece66c4cd3b5e8 (patch) | |
tree | 8424ae264cdfa0158c1ff8329c95c7d8798882d3 | |
parent | 32bfcc419420300ecb294e5fb1c8210f5fbe6d6d (diff) | |
download | scala-ce4572ca49c2ba0db6b02ffffdece66c4cd3b5e8.tar.gz scala-ce4572ca49c2ba0db6b02ffffdece66c4cd3b5e8.tar.bz2 scala-ce4572ca49c2ba0db6b02ffffdece66c4cd3b5e8.zip |
Closed #2779. review by community.
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 6 | ||||
-rw-r--r-- | test/files/neg/t2779.check | 4 | ||||
-rwxr-xr-x | test/files/neg/t2779.scala | 25 |
3 files changed, 33 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index e541c58c1a..542b2d04c2 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -2111,10 +2111,12 @@ trait Typers { self: Analyzer => (e.sym.isType || inBlock || (e.sym.tpe matches e1.sym.tpe))) // default getters are defined twice when multiple overloads have defaults. an // error for this is issued in RefChecks.checkDefaultsInOverloaded - if (!e.sym.isErroneous && !e1.sym.isErroneous && !e.sym.hasFlag(DEFAULTPARAM)) + if (!e.sym.isErroneous && !e1.sym.isErroneous && !e.sym.hasFlag(DEFAULTPARAM)) { error(e.sym.pos, e1.sym+" is defined twice"+ {if(!settings.debug.value) "" else " in "+unit.toString}) - e1 = scope.lookupNextEntry(e1); + scope.unlink(e1) // need to unlink to avoid later problems with lub; see #2779 + } + e1 = scope.lookupNextEntry(e1) } } diff --git a/test/files/neg/t2779.check b/test/files/neg/t2779.check new file mode 100644 index 0000000000..4f94a780a1 --- /dev/null +++ b/test/files/neg/t2779.check @@ -0,0 +1,4 @@ +t2779.scala:16: error: method f is defined twice + override def f = List(M1) + ^ +one error found diff --git a/test/files/neg/t2779.scala b/test/files/neg/t2779.scala new file mode 100755 index 0000000000..d025055aa0 --- /dev/null +++ b/test/files/neg/t2779.scala @@ -0,0 +1,25 @@ +abstract class M +{ + def f: List[M] = Nil +} + +object M1 extends M + +object M2 extends M +{ + override def f = List(M1) +} + +object M3 extends M +{ + override def f = List(M1) + override def f = List(M1) +} + +object M4 extends M +{ + override def f = List( + M3, + M2 + ) +} |