IDEA-234810 IntelliJ doesn't report parsing error on Java code

GitOrigin-RevId: 1d177aaec708bc9d09b5874164af91bf55686d41
This commit is contained in:
Tagir Valeev
2020-03-11 18:17:50 +07:00
committed by intellij-monorepo-bot
parent 1333ace424
commit 00fec48b9f
2 changed files with 22 additions and 14 deletions

View File

@@ -678,21 +678,27 @@ public class HighlightClassUtil {
QuickFixAction.registerQuickFixActions(info, null, JvmElementActionFactories.createModifierActions(aClass, MemberRequestsKt.modifierRequest(JvmModifier.STATIC, false)));
}
QuickFixAction.registerQuickFixAction(info, QUICK_FIX_FACTORY.createRemoveNewQualifierFix(expression, aClass));
} else if (aClass instanceof PsiAnonymousClass) {
final PsiClass baseClass = PsiUtil.resolveClassInType(((PsiAnonymousClass)aClass).getBaseClassType());
if (baseClass != null && baseClass.isInterface()) {
info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression)
.descriptionAndTooltip("Anonymous class implements interface; cannot have qualifier for new").create();
}
QuickFixAction.registerQuickFixAction(info, QUICK_FIX_FACTORY.createRemoveNewQualifierFix(expression, aClass));
} else {
PsiElement refQualifier = Objects.requireNonNull(expression.getClassReference()).getQualifier();
if (refQualifier != null) {
info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(refQualifier)
.descriptionAndTooltip("Qualified class reference is not allowed in qualified new")
.create();
QuickFixAction
.registerQuickFixAction(info, QUICK_FIX_FACTORY.createDeleteFix(refQualifier, QuickFixBundle.message("remove.qualifier.fix")));
if (aClass instanceof PsiAnonymousClass) {
final PsiClass baseClass = PsiUtil.resolveClassInType(((PsiAnonymousClass)aClass).getBaseClassType());
if (baseClass != null && baseClass.isInterface()) {
info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(expression)
.descriptionAndTooltip("Anonymous class implements interface; cannot have qualifier for new").create();
}
QuickFixAction.registerQuickFixAction(info, QUICK_FIX_FACTORY.createRemoveNewQualifierFix(expression, aClass));
}
if (info == null) {
PsiJavaCodeReferenceElement reference = expression.getClassOrAnonymousClassReference();
if (reference != null) {
PsiElement refQualifier = reference.getQualifier();
if (refQualifier != null) {
info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(refQualifier)
.descriptionAndTooltip("Qualified class reference is not allowed in qualified new")
.create();
QuickFixAction
.registerQuickFixAction(info, QUICK_FIX_FACTORY.createDeleteFix(refQualifier, QuickFixBundle.message("remove.qualifier.fix")));
}
}
}
}
}

View File

@@ -7,6 +7,8 @@ class A {
b.new inner();
new A.inner();
b.new <error descr="Qualified class reference is not allowed in qualified new">A</error>.inner();
new A.inner() {};
b.new <error descr="Qualified class reference is not allowed in qualified new">A</error>.inner() {};
}
class inner {}