From 38766600e61d319a86ed85813390c8eed3868b74 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 16 Jun 2020 08:45:59 +0200 Subject: [PATCH] java sealed types: forbid creation of classes with names `sealed`/`permits` (IDEA-243472) GitOrigin-RevId: 91ee5792232111671edbc376fb2b6ffeff2e9a50 --- .../codeInsight/daemon/impl/analysis/HighlightClassUtil.java | 3 ++- .../advHighlightingSealedTypes/SealedRestrictedTypes.java | 2 ++ .../codeInsight/daemon/LightSealedTypesHighlightingTest.java | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedRestrictedTypes.java diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java index f85afa0270d8..312bbd0f4533 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/daemon/impl/analysis/HighlightClassUtil.java @@ -290,7 +290,8 @@ public class HighlightClassUtil { public static boolean isRestrictedIdentifier(String typeName, @NotNull LanguageLevel level) { return PsiKeyword.VAR.equals(typeName) && HighlightingFeature.LVTI.isSufficient(level) || PsiKeyword.YIELD.equals(typeName) && HighlightingFeature.SWITCH_EXPRESSION.isSufficient(level) || - PsiKeyword.RECORD.equals(typeName) && HighlightingFeature.RECORDS.isSufficient(level); + PsiKeyword.RECORD.equals(typeName) && HighlightingFeature.RECORDS.isSufficient(level) || + (PsiKeyword.SEALED.equals(typeName) || PsiKeyword.PERMITS.equals(typeName)) && HighlightingFeature.SEALED_CLASSES.isSufficient(level); } static HighlightInfo checkClassAndPackageConflict(@NotNull PsiClass aClass) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedRestrictedTypes.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedRestrictedTypes.java new file mode 100644 index 000000000000..aefc94e67fac --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlightingSealedTypes/SealedRestrictedTypes.java @@ -0,0 +1,2 @@ +class sealed {} +class permits {} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightSealedTypesHighlightingTest.java b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightSealedTypesHighlightingTest.java index 7b24b7520ac9..d2b3a14310e5 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightSealedTypesHighlightingTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInsight/daemon/LightSealedTypesHighlightingTest.java @@ -20,6 +20,7 @@ public class LightSealedTypesHighlightingTest extends LightJavaCodeInsightFixtur public void testSealedTypesBasics() { doTest(); } public void testSealedFunctionalInterface() { doTest(); } + public void testSealedRestrictedTypes() { doTest(); } private void doTest() { myFixture.configureByFile(getTestName(false) + ".java");