Files
openide/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingPatternsInSwitch/SameVariableNameInPatternMatchingInSwitch.java
Nikita Eshkeev e807464037 [java][switch] IDEA-273874 "Can't resolve symbol" false-negative in switch with fall-through semantics
Resolve as many references as possible in order to keep the GoToSymbol action available but move invalid references in pattern matching for switch to the highlighter pass as the code review suggests

GitOrigin-RevId: 2339b7c9cd02b0d1e3c793c30a8a3338c28c9b73
2021-07-26 08:04:43 +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;
};
}
}