do not mix PsiImmediateClassType and PsiReferenceClassType: presentable name for ref type is calc based on reference name only (IDEA-56135)

This commit is contained in:
anna
2010-11-10 15:22:38 +03:00
parent c5a3b5379b
commit 92b0210e9f
3 changed files with 21 additions and 3 deletions

View File

@@ -399,7 +399,7 @@ public class HighlightClassUtil {
static HighlightInfo checkExtendsClassAndImplementsInterface(PsiReferenceList referenceList,
JavaResolveResult resolveResult,
PsiJavaCodeReferenceElement context) {
PsiJavaCodeReferenceElement ref) {
PsiClass aClass = (PsiClass)referenceList.getParent();
boolean isImplements = referenceList.equals(aClass.getImplementsList());
boolean isInterface = aClass.isInterface();
@@ -409,10 +409,10 @@ public class HighlightClassUtil {
PsiClass extendFrom = (PsiClass)resolveResult.getElement();
if (extendFrom.isInterface() != mustBeInterface) {
errorResult = HighlightInfo.createHighlightInfo(HighlightInfoType.ERROR,
context,
ref,
mustBeInterface ? INTERFACE_EXPECTED : NO_INTERFACE_EXPECTED);
PsiClassType type =
JavaPsiFacade.getInstance(aClass.getProject()).getElementFactory().createType(extendFrom, resolveResult.getSubstitutor());
JavaPsiFacade.getInstance(aClass.getProject()).getElementFactory().createType(ref);
QuickFixAction.registerQuickFixAction(errorResult, new ChangeExtendsToImplementsFix(aClass, type));
}
return errorResult;

View File

@@ -0,0 +1,9 @@
// "Change 'implements b' to 'extends b'" "true"
class a extends b<C.D> {
}
class b<T> {}
class C {
static class D {}
}

View File

@@ -0,0 +1,9 @@
// "Change 'implements b' to 'extends b'" "true"
class a implements <caret>b<C.D> {
}
class b<T> {}
class C {
static class D {}
}