From 46585c4703d68764fee49017ed8a15484f173d03 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Thu, 19 Aug 2021 22:16:56 +0200 Subject: [PATCH] Avoid cycle with F-bounded inner Java class Fixes #13336. --- .../dotty/tools/dotc/core/classfile/ClassfileParser.scala | 2 ++ .../inner-fbounds/Configurer_1.java | 8 ++++++++ .../pos-java-interop-separate/inner-fbounds/Test_2.scala | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 tests/pos-java-interop-separate/inner-fbounds/Configurer_1.java create mode 100644 tests/pos-java-interop-separate/inner-fbounds/Test_2.scala diff --git a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala index bc64f34d8d7a..410bc6e591d4 100644 --- a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala +++ b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala @@ -1061,6 +1061,8 @@ class ClassfileParser( } else if (sym == classRoot.symbol) instanceScope.lookup(name) + else if (sym == classRoot.symbol.owner && name == classRoot.name) + classRoot.symbol else sym.info.member(name).symbol diff --git a/tests/pos-java-interop-separate/inner-fbounds/Configurer_1.java b/tests/pos-java-interop-separate/inner-fbounds/Configurer_1.java new file mode 100644 index 000000000000..f75aaf1743ed --- /dev/null +++ b/tests/pos-java-interop-separate/inner-fbounds/Configurer_1.java @@ -0,0 +1,8 @@ +abstract class AbstractConfigurer { + abstract class AbstractRegistry> {} +} + +public final class Configurer_1 extends AbstractConfigurer { + public final class Registry extends AbstractRegistry {} + public Registry registry() { return null; } +} diff --git a/tests/pos-java-interop-separate/inner-fbounds/Test_2.scala b/tests/pos-java-interop-separate/inner-fbounds/Test_2.scala new file mode 100644 index 000000000000..85455c91762d --- /dev/null +++ b/tests/pos-java-interop-separate/inner-fbounds/Test_2.scala @@ -0,0 +1,2 @@ +object Test: + def registry(cfg: Configurer_1) = cfg.registry