Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/SameVariableNameInPatternMatchingInSwitch.java
Nikita Eshkeev 2ca73ddb92 [java][resolve] IDEA-271676 Pattern matching for switch: fix resolve
Fix resolve in PsiSwitchLabelStatementImpl.

GitOrigin-RevId: 88d00bf2c7d08f2e3e4950218bcada69d55b0772
2021-07-02 20:09:05 +00:00

53 lines
1.3 KiB
Java

class Main {
void statement(Object o) {
switch (o) {
case Integer n && n > 1:
break;
case Integer n && n < 1:
break;
default:
break;
}
}
int expression(Object o) {
return switch (o) {
case Integer n && n > 1 -> n;
case Integer n && n < 1 -> n;
default -> 0;
};
}
int nestedExpression(Object o, Object o2, int p) {
int m = 0;
return switch (o) {
case Integer n && n > 1 -> switch(o2) {
case Integer <error descr="Variable 'm' is already defined in the scope">m</error> && m > 0 -> m + n;
case Integer <error descr="Variable 'p' is already defined in the scope">p</error> -> p + n;
default -> 0;
};
case Integer n && n < 1 -> n;
default -> 0;
};
}
void nestedStatement(Object o, Object o2, int p) {
int m = 0;
switch (o) {
case Integer n && n < 1:
n ++;
case Integer n && n > 1:
switch(o2) {
case Integer <error descr="Variable 'm' is already defined in the scope">m</error> && m > 0:
m += n;
case Integer <error descr="Variable 'p' is already defined in the scope">p</error> && p > 0:
p += n + m;
break;
case Integer p1:
p += n + m + p1;
};
break;
};
}
}