diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-11-02 18:01:54 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-11-02 18:01:54 +0000 |
commit | 3b0b4d7480627d3d19a5745a7163c5b9e3d8f16b (patch) | |
tree | eb09ccb78e8a18753dc5c42ff2c4b834233b7a82 | |
parent | 8e320487627e85cce44a4eab0d77d28fd0904d50 (diff) | |
download | scala-3b0b4d7480627d3d19a5745a7163c5b9e3d8f16b.tar.gz scala-3b0b4d7480627d3d19a5745a7163c5b9e3d8f16b.tar.bz2 scala-3b0b4d7480627d3d19a5745a7163c5b9e3d8f16b.zip |
Closes #3973. Review by extempore.
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala | 5 | ||||
-rw-r--r-- | test/files/run/duplicate-meth.check | 1 | ||||
-rw-r--r-- | test/files/run/duplicate-meth.scala | 23 |
3 files changed, 26 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala index 60c186cb27..cac9453904 100644 --- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala +++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala @@ -923,12 +923,11 @@ abstract class GenJVM extends SubComponent { * then all matching names. */ def memberNames(sym: Symbol) = sym.info.members map (_.name.toString) toSet - lazy val membersInCommon = atPhase(currentRun.picklerPhase)( + lazy val membersInCommon = memberNames(linkedModule) intersect memberNames(linkedClass) - ) /** Should method `m' get a forwarder in the mirror class? */ - def shouldForward(m: Symbol): Boolean = atPhase(currentRun.picklerPhase)( + def shouldForward(m: Symbol): Boolean = ( m.owner != ObjectClass && m.isMethod && m.isPublic diff --git a/test/files/run/duplicate-meth.check b/test/files/run/duplicate-meth.check new file mode 100644 index 0000000000..0992502806 --- /dev/null +++ b/test/files/run/duplicate-meth.check @@ -0,0 +1 @@ +verified! diff --git a/test/files/run/duplicate-meth.scala b/test/files/run/duplicate-meth.scala new file mode 100644 index 0000000000..40c0d3d676 --- /dev/null +++ b/test/files/run/duplicate-meth.scala @@ -0,0 +1,23 @@ + +trait Base { + private val secure_# = 10l +} + +class TestUser extends Base { + def clsMeth(x: Int) = x + private def foo(x: Int) = x +} + +object TestUser extends TestUser { + def objMeth = "a" + + private def foo(x: Int) = x +} + +object Test { + def main(args: Array[String]) { + TestUser.objMeth + // no-op, just check that it passes verification + println("verified!") + } +} |