mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-10 18:09:38 +07:00
IDEA-297389: highlight mismatched deconstruction patterns
GitOrigin-RevId: 0a53c42751596aad5298520a0f23c731d7449fd5
This commit is contained in:
committed by
intellij-monorepo-bot
parent
544ebb9855
commit
10e2fcda21
@@ -0,0 +1,41 @@
|
||||
record LongRecord(String s1, String s2, String s3) {}
|
||||
record PrimitiveRecord(int x){}
|
||||
record IntegerRecord(Integer x){}
|
||||
record RecordWithInterface(I x, I y) {}
|
||||
|
||||
sealed interface I permits C, D {}
|
||||
final class C implements I {}
|
||||
final class D implements I {}
|
||||
|
||||
record TypedRecord<T>(T x) {}
|
||||
|
||||
public class Incompatible {
|
||||
|
||||
Object object;
|
||||
Integer integer;
|
||||
TypedRecord<I> typedRecord;
|
||||
|
||||
<T extends IntegerRecord> void incompatible() {
|
||||
switch (object) {
|
||||
case LongRecord(String s1, <error descr="Incompatible types. Found: 'int', required: 'java.lang.String'">int x</error>, <error descr="Incompatible types. Found: 'int', required: 'java.lang.String'">int y</error>) -> {}
|
||||
case RecordWithInterface(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'I'">Integer x</error>, <error descr="Incompatible types. Found: 'java.lang.Integer', required: 'I'">Integer y</error>) s when true -> {}
|
||||
case RecordWithInterface(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'I'">Integer x</error>, D y) s when true -> {}
|
||||
case RecordWithInterface(I x, D y) s when true -> {}
|
||||
case <error descr="Deconstruction pattern can only be applied to a record">Integer</error>(double x) -> {}
|
||||
case PrimitiveRecord(<error descr="Incompatible types. Found: 'java.lang.Integer', required: 'int'">Integer x</error>) s when true -> {}
|
||||
case PrimitiveRecord(int x) s when true -> {}
|
||||
case IntegerRecord(Integer x) s when true -> {}
|
||||
case IntegerRecord(<error descr="Incompatible types. Found: 'int', required: 'java.lang.Integer'">int x</error>) s when true -> {}
|
||||
case <error descr="'java.lang.Object' cannot be safely cast to 'T'">T(Integer x)</error> -> {}
|
||||
|
||||
}
|
||||
switch (integer){
|
||||
case <error descr="Incompatible types. Found: 'PrimitiveRecord', required: 'java.lang.Integer'">PrimitiveRecord(int x)</error> -> {}
|
||||
default -> {}
|
||||
}
|
||||
switch (typedRecord){
|
||||
case TypedRecord<I>(I x) s-> {}
|
||||
default -> {}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user