Closed
Description
Repro repo: https://github.com/andrzejressel/dotty-resursive-java-types
Compiler version
3.3.0
Minimized code
// CopyableBuilder.java
public interface CopyableBuilder<B extends CopyableBuilder<B, T>, T extends ToCopyableBuilder<B, T>> {
}
// ToCopyableBuilder.java
public interface ToCopyableBuilder<B extends CopyableBuilder<B, T>, T extends ToCopyableBuilder<B, T>> {
}
// Crash.scala
// For some reason empty scala class is required? Is sbt invoking javac when there are only java files?
class Crash
Output
[IJ]compile
[info] compiling 1 Scala source and 2 Java sources to D:\MojeProgramy\scala33-crash\target\scala-3.3.0\classes ...
[error] -- [E057] Type Mismatch Error: D:\MojeProgramy\scala33-crash\src\main\java\test\ToCopyableBuilder.java:1:45
[error] 1 |public interface ToCopyableBuilder<B extends CopyableBuilder<B, T>, T extends ToCopyableBuilder<B, T>> {
[error] | ^
[error] |Type argument T does not conform to upper bound ToCopyableBuilder[B, T] in subpart CopyableBuilder[B, T] of inferred type <: CopyableBuilder[B, T]
[error] |
[error] | longer explanation available when compiling with `-explain`
[error] one error found
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 0 s, completed 4 cze 2023, 16:42:52
Expectation
[IJ]compile
[info] compiling 1 Scala source and 2 Java sources to D:\MojeProgramy\scala33-crash\target\scala-2.13\classes ...
[info] done compiling
[success] Total time: 0 s, completed 4 cze 2023, 16:43:17
Interesting thing is that when these files are ported to Scala they are working fine.