unknown class get all unresolved reference fixes (IDEA-192090)

This commit is contained in:
Anna.Kozlova
2018-05-17 16:18:52 +02:00
parent 3909ca508b
commit f407fb73c3
4 changed files with 25 additions and 3 deletions
@@ -2004,7 +2004,13 @@ public class HighlightUtil extends HighlightUtilBase {
if (aClass == null) {
String canonicalText = type.getCanonicalText();
String description = JavaErrorMessages.message("unknown.class", canonicalText);
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(typeElement).descriptionAndTooltip(description).create();
HighlightInfo info =
HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(typeElement).descriptionAndTooltip(description).create();
PsiJavaCodeReferenceElement referenceElement = typeElement.getInnermostComponentReferenceElement();
if (referenceElement != null) {
UnresolvedReferenceQuickFixProvider.registerReferenceFixes(referenceElement, new QuickFixActionRegistrarImpl(info));
}
return info;
}
}
@@ -105,8 +105,13 @@ public abstract class CreateClassFromUsageBaseFix extends BaseIntentionAction {
public boolean isAvailable(@NotNull final Project project, final Editor editor, final PsiFile file) {
final PsiJavaCodeReferenceElement element = getRefElement();
if (element == null ||
!element.getManager().isInProject(element) ||
CreateFromUsageUtils.isValidReference(element, true)) return false;
!element.getManager().isInProject(element)) {
return false;
}
JavaResolveResult[] results = element.multiResolve(true);
if (results.length > 0 && results[0].getElement() instanceof PsiClass) {
return false;
}
final String refName = element.getReferenceName();
if (refName == null || !checkClassName(refName)) return false;
PsiElement nameElement = element.getReferenceNameElement();
@@ -0,0 +1,7 @@
// "Create class 'Abc'" "true"
public class Test {
Abc Abc;
}
public class Abc {
}
@@ -0,0 +1,4 @@
// "Create class 'Abc'" "true"
public class Test {
<caret>Abc Abc;
}