diff --git a/compiler/src/dotty/tools/dotc/transform/Bridges.scala b/compiler/src/dotty/tools/dotc/transform/Bridges.scala index 071109147b45..e302170991f9 100644 --- a/compiler/src/dotty/tools/dotc/transform/Bridges.scala +++ b/compiler/src/dotty/tools/dotc/transform/Bridges.scala @@ -37,7 +37,7 @@ class Bridges(root: ClassSymbol, thisPhase: DenotTransformer)(using Context) { override def parents = Array(root.superClass) override def exclude(sym: Symbol) = - !sym.isOneOf(MethodOrModule) || super.exclude(sym) + !sym.isOneOf(MethodOrModule) || sym.isAllOf(Module | JavaDefined) || super.exclude(sym) override def canBeHandledByParent(sym1: Symbol, sym2: Symbol, parent: Symbol): Boolean = OverridingPairs.isOverridingPair(sym1, sym2, parent.thisType) diff --git a/compiler/src/dotty/tools/dotc/typer/Checking.scala b/compiler/src/dotty/tools/dotc/typer/Checking.scala index 0d93e83432fe..662ec838b899 100644 --- a/compiler/src/dotty/tools/dotc/typer/Checking.scala +++ b/compiler/src/dotty/tools/dotc/typer/Checking.scala @@ -527,7 +527,7 @@ object Checking { fail("Traits cannot have secondary constructors" + addendum) checkApplicable(Inline, sym.isTerm && !sym.isOneOf(Mutable | Module)) checkApplicable(Lazy, !sym.isOneOf(Method | Mutable)) - if (sym.isType && !sym.is(Deferred)) + if (sym.isType && !sym.isOneOf(Deferred | JavaDefined)) for (cls <- sym.allOverriddenSymbols.filter(_.isClass)) { fail(CannotHaveSameNameAs(sym, cls, CannotHaveSameNameAs.CannotBeOverridden)) sym.setFlag(Private) // break the overriding relationship by making sym Private diff --git a/tests/run/i15199/Child_1.java b/tests/run/i15199/Child_1.java new file mode 100644 index 000000000000..f66dcc55279c --- /dev/null +++ b/tests/run/i15199/Child_1.java @@ -0,0 +1,4 @@ +public class Child_1 extends Parent_1 { + public class Inner { + } +} diff --git a/tests/run/i15199/Parent_1.java b/tests/run/i15199/Parent_1.java new file mode 100644 index 000000000000..529c9780a308 --- /dev/null +++ b/tests/run/i15199/Parent_1.java @@ -0,0 +1,4 @@ +public class Parent_1 { + public class Inner { + } +} diff --git a/tests/run/i15199/Test_2.scala b/tests/run/i15199/Test_2.scala new file mode 100644 index 000000000000..9684d6fb2655 --- /dev/null +++ b/tests/run/i15199/Test_2.scala @@ -0,0 +1,5 @@ +class ScalaChild extends Child_1 + +@main def Test(): Unit = + val methods = classOf[ScalaChild].getDeclaredMethods() + assert(methods.length == 0, methods.mkString(", "))