mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-21 22:11:40 +07:00
[java-highlighting] Report only semicolons between import statements
IJ-CR-110702 GitOrigin-RevId: d30e7021a979e4fc1b0ad5ce5078c5a8d805858a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
fef81252d6
commit
89cfc1c9fc
@@ -632,7 +632,8 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
if (!myHolder.hasErrorResults() &&
|
||||
myLanguageLevel.isAtLeast(LanguageLevel.JDK_21) &&
|
||||
type == JavaTokenType.SEMICOLON &&
|
||||
token.getParent() instanceof PsiImportList) {
|
||||
token.getParent() instanceof PsiImportList &&
|
||||
PsiUtil.isFollowedByImport(token)) {
|
||||
add(HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR)
|
||||
.range(token.getTextRange())
|
||||
.descriptionAndTooltip(JavaErrorBundle.message("error.extra.semicolons.between.import.statements.not.allowed")));
|
||||
|
||||
@@ -6,9 +6,9 @@ import com.intellij.codeInsight.intention.QuickFixFactory;
|
||||
import com.intellij.codeInspection.AbstractBaseJavaLocalInspectionTool;
|
||||
import com.intellij.codeInspection.LocalQuickFix;
|
||||
import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.codeInspection.util.InspectionMessage;
|
||||
import com.intellij.modcommand.ModPsiUpdater;
|
||||
import com.intellij.modcommand.PsiUpdateModCommandQuickFix;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
@@ -111,8 +111,8 @@ public class ForwardCompatibilityInspection extends AbstractBaseJavaLocalInspect
|
||||
@Override
|
||||
public void visitJavaToken(@NotNull PsiJavaToken token) {
|
||||
super.visitJavaToken(token);
|
||||
if (languageLevel.isLessThan(LanguageLevel.JDK_21) && token.getParent() instanceof PsiImportList && token.getTokenType() == JavaTokenType.SEMICOLON) {
|
||||
String message = JavaErrorBundle.message("lone.semicolon.warn");
|
||||
if (languageLevel.isLessThan(LanguageLevel.JDK_21) && token.getParent() instanceof PsiImportList
|
||||
&& token.getTokenType() == JavaTokenType.SEMICOLON && PsiUtil.isFollowedByImport(token)) {
|
||||
String message = JavaErrorBundle.message("redundant.semicolon.warn");
|
||||
holder.registerProblem(token, message, new UnnecessarySemicolonInspection.UnnecessarySemicolonFix());
|
||||
}
|
||||
|
||||
@@ -1446,4 +1446,13 @@ public final class PsiUtil extends PsiUtilCore {
|
||||
public static boolean isJvmLocalVariable(PsiElement variable) {
|
||||
return variable instanceof PsiLocalVariable || variable instanceof PsiParameter;
|
||||
}
|
||||
|
||||
public static boolean isFollowedByImport(PsiElement element) {
|
||||
PsiElement currentElement = element.getNextSibling();
|
||||
while (!(currentElement instanceof PsiImportStatement)) {
|
||||
if (currentElement == null) return false;
|
||||
currentElement = currentElement.getNextSibling();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -43,7 +43,7 @@ public class ForwardCompatibilityInspectionTest extends LightJavaInspectionTestC
|
||||
|
||||
public void testRestrictedKeywordWarning() { doTest(); }
|
||||
|
||||
public void testLoneSemicolon() { doTest(); }
|
||||
public void testLoneSemicolon() { withLevel(LanguageLevel.JDK_20, this::doTest); }
|
||||
|
||||
public void testModuleInfoWarning() {
|
||||
withLevel(LanguageLevel.JDK_1_9, () -> {
|
||||
|
||||
Reference in New Issue
Block a user