[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:
Mikhail Pyltsin
2023-12-14 14:02:59 +01:00
committed by intellij-monorepo-bot
parent 43ad0b4707
commit ed67eee493
3 changed files with 33 additions and 1 deletions

View File

@@ -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) {