[java] highlight the static initializers in unnamed classes

GitOrigin-RevId: 4552b7d57db98a2f9ddea85a89497fb3fdeac275
This commit is contained in:
Roman Ivanov
2023-08-27 21:23:42 +00:00
committed by intellij-monorepo-bot
parent c40178aaec
commit 461d751bc5
4 changed files with 19 additions and 1 deletions
@@ -596,6 +596,12 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
if (!myHolder.hasErrorResults()) {
add(HighlightClassUtil.checkThingNotAllowedInInterface(initializer, initializer.getContainingClass()));
}
if (!myHolder.hasErrorResults()) {
if (initializer.getContainingClass() instanceof PsiUnnamedClass && HighlightingFeature.UNNAMED_CLASSES.isAvailable(initializer)) {
add(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(initializer).descriptionAndTooltip(
JavaErrorBundle.message("text.initializers.are.not.allowed.in.unnamed.classes")));
}
}
}
@Override
@@ -576,4 +576,5 @@ error.cannot.infer.pattern.type=Cannot infer pattern type: {0}
error.extra.semicolons.between.import.statements.not.allowed=Extra semicolons between import statements are not allowed
error.guard.allowed.after.patterns.only=Guard is allowed after patterns only
error.unnamed.class.contains.no.main.method=Unnamed class contains no 'main' method
text.package.statement.not.allowed.for.unnamed.class=Package statement is not allowed for unnamed class
text.package.statement.not.allowed.for.unnamed.class=Package statement is not allowed for unnamed class
text.initializers.are.not.allowed.in.unnamed.classes=Initializers are not allowed in unnamed classes
@@ -0,0 +1,7 @@
<error descr="Initializers are not allowed in unnamed classes" textAttributesKey="ERRORS_ATTRIBUTES">static {
}</error>
void main() {
}
@@ -20,6 +20,10 @@ class UnnamedClassHighlightingTest : LightJavaCodeInsightFixtureTestCase() {
doTest()
}
fun testStaticInitializer() {
doTest()
}
private fun doTest() {
myFixture.configureByFile(getTestName(false) + ".java")
myFixture.checkHighlighting()