diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java index 45a5535097bb..6c1f6c369be9 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightUtil.java @@ -988,6 +988,11 @@ public class HighlightUtil { isAllowed &= !privateOrProtected; } } + if (PsiModifier.NON_SEALED.equals(modifier) && !aClass.hasModifierProperty(PsiModifier.SEALED)) { + isAllowed = Arrays.stream(aClass.getSuperTypes()) + .map(PsiClassType::resolve) + .anyMatch(superClass -> superClass != null && superClass.hasModifierProperty(PsiModifier.SEALED)); + } } else if (modifierOwner instanceof PsiMethod) { PsiMethod method = (PsiMethod)modifierOwner; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedTypesBasics.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedTypesBasics.java index 43a98903a8d5..58c1bdbcb5fe 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedTypesBasics.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedTypesBasics.java @@ -13,3 +13,7 @@ sealed interface IA permits IB, IC {} final class IB implements IA {} sealed interface IC extends IA {} class ICSameFile implements IC {} + +sealed interface ID0 {} +non-sealed interface ID1 extends ID0 {} +non-sealed interface ID extends ID1 {}