Skip to content

Commit 7b3d1f1

Browse files
Fix #6152: Dotty tries to override Java bridge methods
Dotty overrides Java bridge methods when the user intends to override the method for which the bridge was generated. This commit forbids Dotty to override bridge methods altogether.
1 parent 574fd0c commit 7b3d1f1

File tree

3 files changed

+12
-1
lines changed

3 files changed

+12
-1
lines changed

compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class ClassfileParser(
211211
if (method) Flags.Method | methodTranslation.flags(jflags)
212212
else fieldTranslation.flags(jflags)
213213
val name = pool.getName(in.nextChar)
214-
if (!(sflags is Flags.Private) || name == nme.CONSTRUCTOR) {
214+
if (!(sflags.is(Flags.Private) || sflags.is(Flags.Bridge)) || name == nme.CONSTRUCTOR) {
215215
val member = ctx.newSymbol(
216216
getOwner(jflags), name, sflags, memberCompleter, coord = start)
217217
getScope(jflags).enter(member)

tests/pos/i6152/A_1.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
abstract class A_1 {
2+
public abstract Object f();
3+
4+
public static abstract class B extends A_1 {
5+
@Override
6+
public abstract String f();
7+
}
8+
}

tests/pos/i6152/B_2.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class C extends A_1.B {
2+
def f() = "hello"
3+
}

0 commit comments

Comments
 (0)