mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 04:51:24 +07:00
[java-inspection] IDEA-340576 Uncompilable code generated for switch pattern matching
- class, which has permitted list, doesn't have `sealed` modifier, process this class as sealed GitOrigin-RevId: afaccb6f6479c90ad431b9300a586854e89ea204
This commit is contained in:
committed by
intellij-monorepo-bot
parent
43ad0b4707
commit
ed67eee493
@@ -73,10 +73,13 @@ public final class CreateSwitchBranchesUtil {
|
||||
PsiClass selectorClass = PsiUtil.resolveClassInClassTypeOnly(switchExpression != null ? switchExpression.getType() : null);
|
||||
boolean hasSealedClass = selectorClass != null &&
|
||||
(selectorClass.hasModifierProperty(PsiModifier.SEALED) ||
|
||||
selectorClass.getPermitsList() != null ||
|
||||
(selectorClass instanceof PsiTypeParameter typeParameter &&
|
||||
ContainerUtil.exists(typeParameter.getExtendsListTypes(), extType -> {
|
||||
PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(extType);
|
||||
return psiClass != null && psiClass.hasModifierProperty(PsiModifier.SEALED);
|
||||
return psiClass != null &&
|
||||
(psiClass.hasModifierProperty(PsiModifier.SEALED) ||
|
||||
psiClass.getPermitsList() != null);
|
||||
})));
|
||||
boolean isPatternsGenerated = selectorClass != null && !selectorClass.isEnum() && hasSealedClass;
|
||||
if (body == null) {
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
// "Create missing switch branch 'Outer.Book'" "true-preview"
|
||||
class Outer {
|
||||
interface SaleItem permits Book {
|
||||
}
|
||||
|
||||
record Book(String title, String author, double price) implements SaleItem {
|
||||
}
|
||||
|
||||
|
||||
int calc(SaleItem item) {
|
||||
return switch (item) {
|
||||
case Book book -> 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
// "Create missing switch branch 'Outer.Book'" "true-preview"
|
||||
class Outer {
|
||||
interface SaleItem permits Book {
|
||||
}
|
||||
|
||||
record Book(String title, String author, double price) implements SaleItem {
|
||||
}
|
||||
|
||||
|
||||
int calc(SaleItem item) {
|
||||
return switch (it<caret>em) {
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user