diff --git a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala index ebaebd3a7937..50167643daef 100644 --- a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala +++ b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileParser.scala @@ -385,7 +385,7 @@ class ClassfileParser( if (argsBuf != null) argsBuf += arg } accept('>') - if (skiptvs) tp else tp.appliedTo(argsBuf.toList) + if (skiptvs) tp else AppliedType(tp, argsBuf.toList) } else tp case tp => diff --git a/tests/pos/i10567/Main_2.scala b/tests/pos/i10567/Main_2.scala new file mode 100644 index 000000000000..50759cf00b87 --- /dev/null +++ b/tests/pos/i10567/Main_2.scala @@ -0,0 +1,4 @@ +object Test { + val bldr = SchemaBuilder_1.builder() + val oops = bldr.fixed("foo") +} diff --git a/tests/pos/i10567/SchemaBuilder_1.java b/tests/pos/i10567/SchemaBuilder_1.java new file mode 100644 index 000000000000..37351af872da --- /dev/null +++ b/tests/pos/i10567/SchemaBuilder_1.java @@ -0,0 +1,17 @@ +public class SchemaBuilder_1 { + public static class Schema {} + + public static TypeBuilder builder() { + throw new UnsupportedOperationException(); + } + + public static class NamespacedBuilder> {} + + public static class FixedBuilder extends NamespacedBuilder> {} + + public static class TypeBuilder { + public FixedBuilder fixed(String name) { + throw new UnsupportedOperationException(); + } + } +} diff --git a/tests/pos/i10945/Built_1.java b/tests/pos/i10945/Built_1.java new file mode 100644 index 000000000000..8c86783ffa27 --- /dev/null +++ b/tests/pos/i10945/Built_1.java @@ -0,0 +1,5 @@ +public interface Built_1 { + interface Builder extends GeneralBuilder> {} +} + +interface GeneralBuilder> {} diff --git a/tests/pos/i10945/Test_2.scala b/tests/pos/i10945/Test_2.scala new file mode 100644 index 000000000000..92bbf8c0928d --- /dev/null +++ b/tests/pos/i10945/Test_2.scala @@ -0,0 +1 @@ +def useBuilder[A](builder: Built_1.Builder[A]): Unit = ???