[java-highlighting] IJ-CR-132825 IDEA-352187 Support JEP 455: highlighting for instanceof with primitives

- use `HighlightUtil.checkFeature` for PRIMITIVE_TYPES_IN_PATTERNS
- simplify tests
- add javadocs a bit

GitOrigin-RevId: 61019896534a11e1c7e2f281054d49a32a8ab8e6
This commit is contained in:
Mikhail Pyltsin
2024-04-30 15:02:09 +02:00
committed by intellij-monorepo-bot
parent 7bef4d66a4
commit f27595c831
9 changed files with 1495 additions and 4129 deletions

View File

@@ -69,12 +69,18 @@ final class PatternHighlightingModel {
PsiType substitutedRecordComponentType = substitutor.substitute(recordComponentType);
PsiType deconstructionComponentType = JavaPsiPatternUtil.getPatternType(deconstructionComponent);
LanguageLevel languageLevel = PsiUtil.getLanguageLevel(deconstructionPattern);
if (!isApplicable(substitutedRecordComponentType, deconstructionComponentType, languageLevel)) {
if (!isApplicableForRecordComponent(substitutedRecordComponentType, deconstructionComponentType, languageLevel)) {
hasMismatchedPattern = true;
if (recordComponents.length == deconstructionComponents.length) {
HighlightInfo.Builder builder;
if ((substitutedRecordComponentType instanceof PsiPrimitiveType || deconstructionComponentType instanceof PsiPrimitiveType) &&
JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.isSufficient(languageLevel)) {
HighlightInfo.Builder builder = null;
if (isApplicableForRecordComponent(substitutedRecordComponentType, deconstructionComponentType,
JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel())) {
builder = HighlightUtil.checkFeature(deconstructionComponent, JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS, languageLevel,
deconstructionComponent.getContainingFile());
}
else if ((substitutedRecordComponentType instanceof PsiPrimitiveType ||
deconstructionComponentType instanceof PsiPrimitiveType) &&
JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.isSufficient(languageLevel)) {
String message = JavaErrorBundle.message("inconvertible.type.cast",
JavaHighlightUtil.formatType(substitutedRecordComponentType), JavaHighlightUtil
.formatType(deconstructionComponentType));
@@ -82,15 +88,12 @@ final class PatternHighlightingModel {
.range(deconstructionComponent)
.descriptionAndTooltip(message);
}
else {
if (builder == null) {
builder = HighlightUtil.createIncompatibleTypeHighlightInfo(substitutedRecordComponentType, deconstructionComponentType,
deconstructionComponent.getTextRange(), 0);
}
if (isApplicable(substitutedRecordComponentType, deconstructionComponentType,
JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.getMinimumLevel())) {
HighlightUtil.registerIncreaseLanguageLevelFixes(deconstructionComponent, JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS, builder);
}
errorSink.accept(builder);
reported = true;
}
@@ -140,12 +143,24 @@ final class PatternHighlightingModel {
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(pattern).descriptionAndTooltip(message);
}
private static boolean isApplicable(@NotNull PsiType recordType, @Nullable PsiType patternType, @NotNull LanguageLevel languageLevel) {
if ((recordType instanceof PsiPrimitiveType || patternType instanceof PsiPrimitiveType) &&
/**
* Checks if the given record component type is applicable for the pattern type based on the specified language level.
* For example:
* <pre><code>
* record SomeClass(RecordComponentType component)
* (a instanceof SomeClass(PatternType obj))
* </code></pre>
* @param recordComponentType the type of the record component
* @param patternType the type of the pattern
* @param languageLevel the language level to consider
* @return true if the record component type is applicable for the pattern type, false otherwise
*/
private static boolean isApplicableForRecordComponent(@NotNull PsiType recordComponentType, @Nullable PsiType patternType, @NotNull LanguageLevel languageLevel) {
if ((recordComponentType instanceof PsiPrimitiveType || patternType instanceof PsiPrimitiveType) &&
!JavaFeature.PRIMITIVE_TYPES_IN_PATTERNS.isSufficient(languageLevel)) {
return recordType.equals(patternType);
return recordComponentType.equals(patternType);
}
return patternType != null && TypeConversionUtil.areTypesConvertible(recordType, patternType);
return patternType != null && TypeConversionUtil.areTypesConvertible(recordComponentType, patternType);
}
@NotNull

View File

@@ -10,72 +10,34 @@ public class InstanceofPrimitivesNotAllowed {
private static void testObjectToPrimitive() {
Integer i = 1;
Object l = 1;
if (<error descr="Inconvertible types; cannot cast 'java.lang.Integer' to 'double'">i instanceof double</error>) { //error
System.out.println("double");
}
if (<error descr="Inconvertible types; cannot cast 'java.lang.Integer' to 'int'">i instanceof int</error>) { //error
System.out.println("int");
}
if (<error descr="Inconvertible types; cannot cast 'java.lang.Integer' to 'int'">i instanceof int ii</error>) { //error
System.out.println("int pattern");
}
if (<error descr="Inconvertible types; cannot cast 'java.lang.Object' to 'double'">l instanceof double</error>) { //error
System.out.println("double");
}
if (<error descr="Inconvertible types; cannot cast 'java.lang.Object' to 'int'">l instanceof int</error>) { //error
System.out.println("int");
}
if (<error descr="Inconvertible types; cannot cast 'java.lang.Object' to 'int'">l instanceof int ii</error>) { //error
System.out.println("int pattern");
}
if (<error descr="Inconvertible types; cannot cast 'java.lang.Integer' to 'double'">i instanceof double</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'java.lang.Integer' to 'int'">i instanceof int</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'java.lang.Integer' to 'int'">i instanceof int ii</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'java.lang.Object' to 'double'">l instanceof double</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'java.lang.Object' to 'int'">l instanceof int</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'java.lang.Object' to 'int'">l instanceof int ii</error>) { } //error
}
private static void testPrimitiveToPrimitive() {
int i = 1;
long l = 1;
if (<error descr="Inconvertible types; cannot cast 'int' to 'double'">i instanceof double</error>) { //error
System.out.println("double");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'int'">i instanceof int</error>) { //error
System.out.println("int");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'int'">i instanceof int ii</error>) { //error
System.out.println("int pattern");
}
if (<error descr="Inconvertible types; cannot cast 'long' to 'double'">l instanceof double</error>) { //error
System.out.println("double");
}
if (<error descr="Inconvertible types; cannot cast 'long' to 'int'">l instanceof int</error>) { //error
System.out.println("int");
}
if (<error descr="Inconvertible types; cannot cast 'long' to 'int'">l instanceof int ii</error>) { //error
System.out.println("int pattern");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'double'">i instanceof double</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'int' to 'int'">i instanceof int</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'int' to 'int'">i instanceof int ii</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'long' to 'double'">l instanceof double</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'long' to 'int'">l instanceof int</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'long' to 'int'">l instanceof int ii</error>) { } //error
}
private static void testPrimitiveToObject() {
int i = 1;
long l = 1;
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Double'">i instanceof Double</error>) { //error
System.out.println("Double");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Integer'">i instanceof Integer</error>) { //error
System.out.println("Integer");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Object'">i instanceof Object</error>) { //error
System.out.println("Object");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Integer'">i instanceof Integer ii</error>) { //error
System.out.println("Integer ii");
}
if (<error descr="Inconvertible types; cannot cast 'long' to 'java.lang.Double'">l instanceof Double</error>) { //error
System.out.println("Double");
}
if (<error descr="Inconvertible types; cannot cast 'long' to 'java.lang.Integer'">l instanceof Integer</error>) { //error
System.out.println("Integer");
}
if (<error descr="Inconvertible types; cannot cast 'long' to 'java.lang.Object'">l instanceof Object</error>) { //error
System.out.println("Object");
}
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Double'">i instanceof Double</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Integer'">i instanceof Integer</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Object'">i instanceof Object</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'int' to 'java.lang.Integer'">i instanceof Integer ii</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'long' to 'java.lang.Double'">l instanceof Double</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'long' to 'java.lang.Integer'">l instanceof Integer</error>) { } //error
if (<error descr="Inconvertible types; cannot cast 'long' to 'java.lang.Object'">l instanceof Object</error>) { } //error
}
}

View File

@@ -29,10 +29,10 @@ public class Incompatible {
case RecordWithInterface(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'com.test.I'">Integer x</error>, D y) when true -> {}
case RecordWithInterface(I x, D y) when true -> {}
case <error descr="Deconstruction pattern can only be applied to a record, 'java.lang.Integer' is not a record">Integer</error>(double x) -> {}
case PrimitiveRecord(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'int'">Integer x</error>) when true -> {}
case PrimitiveRecord(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">Integer x</error>) when true -> {}
case PrimitiveRecord(int x) when true -> {}
case IntegerRecord(Integer x) when true -> {}
case IntegerRecord(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int x</error>) when true -> {}
case IntegerRecord(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">int x</error>) when true -> {}
case <error descr="'Object' cannot be safely cast to 'T'">T(Integer x)</error> -> {}
}

View File

@@ -70,7 +70,7 @@ public class SwitchRecordPrimitiveIsNotAllowed {
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
}
switch (source) {
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'char', required: 'int'">char source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
}
switch (source) {
@@ -79,14 +79,14 @@ public class SwitchRecordPrimitiveIsNotAllowed {
}
switch (source) {
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'char', required: 'int'">char source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>)) -> System.out.println("1");//error
}
switch (source) {
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'int'">Integer source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Integer source1</error>)) -> System.out.println("1");//error
}
switch (source) {
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'int'">Integer source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Integer source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
}
switch (source) {
@@ -94,95 +94,95 @@ public class SwitchRecordPrimitiveIsNotAllowed {
default -> System.out.println("2");
}
switch (source) {
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">Object source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
}
switch (source) {
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">Object source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>)) -> System.out.println("1");//error
}
switch (source) {
case RecordRecordInt(RecordInt(int source1)) -> System.out.println("1");
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'int'">Number source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">Object source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Number source1</error>)) -> System.out.println("1");//error
case RecordRecordInt(RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>)) -> System.out.println("1");//error
}
}
private static void testForRecordNumber(RecordNumber source) {
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Number'">boolean source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Number'">char source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'java.lang.Character', required: 'java.lang.Number'">Character source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Number'">char source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(Integer source1) -> System.out.println("1");
}
switch (source) {
case RecordNumber(Integer source1) -> System.out.println("1");
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordNumber(Object source1) -> System.out.println("1");
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(Object source1) -> System.out.println("1");
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(Number source1) -> System.out.println("1");
case RecordNumber(Object source1) -> System.out.println("1");
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(Number source1) -> System.out.println("1");
}
switch (source) {
case RecordNumber(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Number'">int source1</error>) -> System.out.println("1");//error
case RecordNumber(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
}
private static void testForRecordDoubleObj(RecordDoubleObj source) {
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Double'">boolean source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Double'">char source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Double'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Double'">int source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(Double source1) -> System.out.println("1");
}
switch (source) {
case RecordDoubleObj(Double source1) -> System.out.println("1");
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'float', required: 'java.lang.Double'">float source1</error>) -> System.out.println("1");//error
@@ -190,18 +190,18 @@ public class SwitchRecordPrimitiveIsNotAllowed {
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'java.lang.Double'">Integer source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordDoubleObj(Object source1) -> System.out.println("1");
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDoubleObj(<error descr="Incompatible types. Found: 'double', required: 'java.lang.Double'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">double source1</error>) -> System.out.println("1");//error
case RecordDoubleObj(Object source1) -> System.out.println("1");
}
switch (source) {
@@ -217,28 +217,28 @@ public class SwitchRecordPrimitiveIsNotAllowed {
case RecordDouble(double source1) -> System.out.println("1");
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'char', required: 'double'">char source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
case RecordDouble(double source1) -> System.out.println("1");
}
switch (source) {
case RecordDouble(double source1) -> System.out.println("1");
case RecordDouble(<error descr="Incompatible types. Found: 'int', required: 'double'">int source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'int', required: 'double'">int source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordDouble(double source1) -> System.out.println("1");
}
switch (source) {
case RecordDouble(double source1) -> System.out.println("1");
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Double', required: 'double'">Double source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Double', required: 'double'">Double source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Double source1</error>) -> System.out.println("1");//error
case RecordDouble(double source1) -> System.out.println("1");
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'float', required: 'double'">float source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Double', required: 'double'">Double source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">float source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Double source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'double'">Integer source1</error>) -> System.out.println("1");//error
@@ -249,63 +249,63 @@ public class SwitchRecordPrimitiveIsNotAllowed {
default -> System.out.println("2");
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'double'">Object source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordDouble(double source1) -> System.out.println("1");
}
switch (source) {
case RecordDouble(double source1) -> System.out.println("1");
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'double'">Object source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordDouble(<error descr="Incompatible types. Found: 'int', required: 'double'">int source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'double'">Number source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'double'">Object source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Number source1</error>) -> System.out.println("1");//error
case RecordDouble(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
}
private static void testForRecordLongObj(RecordLongObj source) {
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Long'">boolean source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Long'">char source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Long'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Long'">int source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(Long source1) -> System.out.println("1");
}
switch (source) {
case RecordLongObj(Long source1) -> System.out.println("1");
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'float', required: 'java.lang.Long'">float source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">float source1</error>) -> System.out.println("1");//error
case RecordLongObj(Long source1) -> System.out.println("1");
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'java.lang.Long'">Integer source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordLongObj(Object source1) -> System.out.println("1");
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLongObj(<error descr="Incompatible types. Found: 'long', required: 'java.lang.Long'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">long source1</error>) -> System.out.println("1");//error
case RecordLongObj(Object source1) -> System.out.println("1");
}
switch (source) {
@@ -331,28 +331,28 @@ public class SwitchRecordPrimitiveIsNotAllowed {
case RecordLong(long source1) -> System.out.println("1");
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'char', required: 'long'">char source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
case RecordLong(long source1) -> System.out.println("1");
}
switch (source) {
case RecordLong(long source1) -> System.out.println("1");
case RecordLong(<error descr="Incompatible types. Found: 'int', required: 'long'">int source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'int', required: 'long'">int source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordLong(long source1) -> System.out.println("1");
}
switch (source) {
case RecordLong(long source1) -> System.out.println("1");
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Long', required: 'long'">Long source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Long', required: 'long'">Long source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Long source1</error>) -> System.out.println("1");//error
case RecordLong(long source1) -> System.out.println("1");
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'float', required: 'long'">float source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Long', required: 'long'">Long source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">float source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Long source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'long'">Integer source1</error>) -> System.out.println("1");//error
@@ -363,35 +363,35 @@ public class SwitchRecordPrimitiveIsNotAllowed {
default -> System.out.println("2");
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'long'">Object source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordLong(long source1) -> System.out.println("1");
}
switch (source) {
case RecordLong(long source1) -> System.out.println("1");
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'long'">Object source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordLong(<error descr="Incompatible types. Found: 'int', required: 'long'">int source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'long'">Number source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'long'">Object source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Number source1</error>) -> System.out.println("1");//error
case RecordLong(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
}
private static void testForRecordByte(RecordByte source) {
switch (source) {
case RecordByte(<error descr="Incompatible types. Found: 'boolean', required: 'byte'">boolean source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Incompatible types. Found: 'int', required: 'byte'">int source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordByte(byte source1) -> System.out.println("1");
case RecordByte(<error descr="Incompatible types. Found: 'int', required: 'byte'">int source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordByte(<error descr="Incompatible types. Found: 'java.lang.Byte', required: 'byte'">Byte source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Incompatible types. Found: 'int', required: 'byte'">int source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Byte source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordByte(<error descr="Incompatible types. Found: 'int', required: 'byte'">int source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordByte(byte source1) -> System.out.println("1");
}
switch (source) {
@@ -403,16 +403,16 @@ public class SwitchRecordPrimitiveIsNotAllowed {
case RecordByte(byte source1) -> System.out.println("1");
}
switch (source) {
case RecordByte(<error descr="Incompatible types. Found: 'int', required: 'byte'">int source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordByte(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'byte'">Object source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordByte(byte source1) -> System.out.println("1");
}
switch (source) {
case RecordByte(byte source1) -> System.out.println("1");
case RecordByte(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'byte'">Object source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordByte(byte source1) -> System.out.println("1");
@@ -420,11 +420,11 @@ public class SwitchRecordPrimitiveIsNotAllowed {
}
switch (source) {
case RecordByte(byte source1) -> System.out.println("1");
case RecordByte(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'byte'">Number source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'byte'">Object source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Number source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordByte(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'byte'">Object source1</error>) -> System.out.println("1");//error
case RecordByte(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordByte(byte source1) -> System.out.println("1");
}
}
@@ -432,46 +432,46 @@ public class SwitchRecordPrimitiveIsNotAllowed {
private static void testForRecordCharObj(RecordCharObj source) {
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Character'">boolean source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(Character source1) -> System.out.println("1");
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'java.lang.Character'">Integer source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'java.lang.Character'">Integer source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordCharObj(Object source1) -> System.out.println("1");
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(Object source1) -> System.out.println("1");
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Character'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordCharObj(Object source1) -> System.out.println("1");
}
switch (source) {
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'java.lang.Character'">Number source1</error>) -> System.out.println("1");//error
case RecordCharObj(Object source1) -> System.out.println("1");
}
@@ -480,29 +480,29 @@ public class SwitchRecordPrimitiveIsNotAllowed {
}
switch (source) {
case RecordCharObj(Object source1) -> System.out.println("1");
case RecordCharObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Character'">char source1</error>) -> System.out.println("1");//error
case RecordCharObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
}
}
private static void testForRecordChar(RecordChar source) {
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'boolean', required: 'char'">boolean source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordChar(char source1) -> System.out.println("1");
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Character', required: 'char'">Character source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Character source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordChar(char source1) -> System.out.println("1");
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'char'">Integer source1</error>) -> System.out.println("1");//error
}
switch (source) {
@@ -510,29 +510,29 @@ public class SwitchRecordPrimitiveIsNotAllowed {
case RecordChar(char source1) -> System.out.println("1");
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'char'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(char source1) -> System.out.println("1");
}
switch (source) {
case RecordChar(char source1) -> System.out.println("1");
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'char'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'char'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'char'">Number source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'char'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordChar(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'char'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Incompatible types. Found: 'int', required: 'char'">int source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordChar(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
}
@@ -542,7 +542,7 @@ public class SwitchRecordPrimitiveIsNotAllowed {
case RecordInt(int source1) -> System.out.println("1");
}
switch (source) {
case RecordInt(<error descr="Incompatible types. Found: 'char', required: 'int'">char source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
case RecordInt(int source1) -> System.out.println("1");
}
switch (source) {
@@ -551,14 +551,14 @@ public class SwitchRecordPrimitiveIsNotAllowed {
}
switch (source) {
case RecordInt(int source1) -> System.out.println("1");
case RecordInt(<error descr="Incompatible types. Found: 'char', required: 'int'">char source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">char source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordInt(int source1) -> System.out.println("1");
case RecordInt(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'int'">Integer source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Integer source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordInt(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'int'">Integer source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Integer source1</error>) -> System.out.println("1");//error
case RecordInt(int source1) -> System.out.println("1");
}
switch (source) {
@@ -566,52 +566,52 @@ public class SwitchRecordPrimitiveIsNotAllowed {
default -> System.out.println("2");
}
switch (source) {
case RecordInt(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">Object source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordInt(int source1) -> System.out.println("1");
}
switch (source) {
case RecordInt(int source1) -> System.out.println("1");
case RecordInt(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">Object source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordInt(int source1) -> System.out.println("1");
case RecordInt(<error descr="Incompatible types. Found: 'java.lang.Number', required: 'int'">Number source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'int'">Object source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Number source1</error>) -> System.out.println("1");//error
case RecordInt(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
}
}
private static void testForRecordIntObj(RecordIntObj source) {
switch (source) {
case RecordIntObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Integer'">boolean source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordIntObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Integer'">char source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordIntObj(<error descr="Incompatible types. Found: 'java.lang.Character', required: 'java.lang.Integer'">Character source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Incompatible types. Found: 'char', required: 'java.lang.Integer'">char source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(Integer source1) -> System.out.println("1");
}
switch (source) {
case RecordIntObj(Integer source1) -> System.out.println("1");
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordIntObj(Object source1) -> System.out.println("1");
case RecordIntObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int source1</error>) -> System.out.println("1");//error
case RecordIntObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">int source1</error>) -> System.out.println("1");//error
}
}
@@ -622,10 +622,10 @@ public class SwitchRecordPrimitiveIsNotAllowed {
}
switch (source) {
case RecordBool(boolean source1) -> System.out.println("1");
case RecordBool(<error descr="Incompatible types. Found: 'java.lang.Boolean', required: 'boolean'">Boolean source1</error>) -> System.out.println("1");//error
case RecordBool(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Boolean source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordBool(<error descr="Incompatible types. Found: 'java.lang.Boolean', required: 'boolean'">Boolean source1</error>) -> System.out.println("1");//error
case RecordBool(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Boolean source1</error>) -> System.out.println("1");//error
case RecordBool(boolean source1) -> System.out.println("1");
}
switch (source) {
@@ -633,31 +633,31 @@ public class SwitchRecordPrimitiveIsNotAllowed {
default -> System.out.println("2");
}
switch (source) {
case RecordBool(<error descr="Incompatible types. Found: 'java.lang.Object', required: 'boolean'">Object source1</error>) -> System.out.println("1");//error
case RecordBool(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">Object source1</error>) -> System.out.println("1");//error
case RecordBool(boolean source1) -> System.out.println("1");
}
}
private static void testForRecordBoolObj(RecordBoolObj source) {
switch (source) {
case RecordBoolObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Boolean'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Boolean'">int source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordBoolObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Boolean'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(Boolean source1) -> System.out.println("1");
}
switch (source) {
case RecordBoolObj(Boolean source1) -> System.out.println("1");
case RecordBoolObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Boolean'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">boolean source1</error>) -> System.out.println("1");//error
}
switch (source) {
case RecordBoolObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Boolean'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">boolean source1</error>) -> System.out.println("1");//error
default -> System.out.println("2");
}
switch (source) {
case RecordBoolObj(Object source1) -> System.out.println("1");
case RecordBoolObj(<error descr="Incompatible types. Found: 'boolean', required: 'java.lang.Boolean'">boolean source1</error>) -> System.out.println("1");//error
case RecordBoolObj(<error descr="Primitive types in patterns, instanceof and switch are not supported at language level '22'">boolean source1</error>) -> System.out.println("1");//error
}
}
}

View File

@@ -108,7 +108,7 @@ class Bar extends Foo {
@Override
void test4(Object obj) {
if (obj instanceof Point(double x, <error descr="Incompatible types. Found: 'int', required: 'double'">int y</error>)) {}
if (obj instanceof Point(double x, <error descr="Primitive types in patterns, instanceof and switch are not supported at language level '21'">int y</error>)) {}
}
@Override