A DESCRIPTION OF THE PROBLEM :
Compiling invalid sealed class Java source code using JavaC 22 causes infinite recursion in jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3707)
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Compilation should fail with error messages
ACTUAL -
SealedClassCompatibility4Mutated.java:7: error: interface expected here
static interface SealedC1C33 extends Sealed {}
^
SealedClassCompatibility4Mutated.java:8: error: interface expected here
static interface SealedD1C33 extends Sealed {}
^
SealedClassCompatibility4Mutated.java:4: error: cyclic inheritance involving SealedClassCompatibility4Mutated.Sealed
sealed class Sealed implements SealedC1C33, SealedD1C33 {}
^
SealedClassCompatibility4Mutated.java:3: error: sealed class must have subclasses
sealed class A implements Sealed, Comparable<A> {}
^
4 errors
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at jdk.compiler/com.sun.tools.javac.code.Types$15.visitClassType(Types.java:2517)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:1050)
at jdk.compiler/com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:4974)
at jdk.compiler/com.sun.tools.javac.code.Types.supertype(Types.java:2514)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3707)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
---------- BEGIN SOURCE ----------
import java.lang.Object;
public class SealedClassCompatibility4Mutated {
sealed class A implements Sealed, Comparable<A> {}
sealed class Sealed implements SealedC1C33, SealedD1C33 {}
static final class C implements SealedC1C33, SealedD1C33 {}
static interface SealedC1C33 extends Sealed {}
static interface SealedD1C33 extends Sealed {}
static void main() {
System.out.println(new A() instanceof Sealed);
}
}
---------- END SOURCE ----------
Compiling invalid sealed class Java source code using JavaC 22 causes infinite recursion in jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3707)
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
Compilation should fail with error messages
ACTUAL -
SealedClassCompatibility4Mutated.java:7: error: interface expected here
static interface SealedC1C33 extends Sealed {}
^
SealedClassCompatibility4Mutated.java:8: error: interface expected here
static interface SealedD1C33 extends Sealed {}
^
SealedClassCompatibility4Mutated.java:4: error: cyclic inheritance involving SealedClassCompatibility4Mutated.Sealed
sealed class Sealed implements SealedC1C33, SealedD1C33 {}
^
SealedClassCompatibility4Mutated.java:3: error: sealed class must have subclasses
sealed class A implements Sealed, Comparable<A> {}
^
4 errors
The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
at jdk.compiler/com.sun.tools.javac.code.Types$15.visitClassType(Types.java:2517)
at jdk.compiler/com.sun.tools.javac.code.Type$ClassType.accept(Type.java:1050)
at jdk.compiler/com.sun.tools.javac.code.Types$UnaryVisitor.visit(Types.java:4974)
at jdk.compiler/com.sun.tools.javac.code.Types.supertype(Types.java:2514)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3707)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
at jdk.compiler/com.sun.tools.javac.code.Types.closure(Types.java:3720)
---------- BEGIN SOURCE ----------
import java.lang.Object;
public class SealedClassCompatibility4Mutated {
sealed class A implements Sealed, Comparable<A> {}
sealed class Sealed implements SealedC1C33, SealedD1C33 {}
static final class C implements SealedC1C33, SealedD1C33 {}
static interface SealedC1C33 extends Sealed {}
static interface SealedD1C33 extends Sealed {}
static void main() {
System.out.println(new A() instanceof Sealed);
}
}
---------- END SOURCE ----------
- links to
-
Commit(master) openjdk/jdk/b78043fd
-
Review(master) openjdk/jdk/23704