mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
detect type parameters in type arguments (IDEA-175309)
This commit is contained in:
+11
-6
@@ -16,7 +16,7 @@
|
||||
package com.intellij.refactoring.util.classMembers;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
|
||||
/**
|
||||
* @author dsl
|
||||
@@ -61,11 +61,16 @@ public class ElementNeedsThis extends ClassThisReferencesVisitor {
|
||||
@Override
|
||||
public void visitReferenceExpression(PsiReferenceExpression expression) {
|
||||
super.visitReferenceExpression(expression);
|
||||
final PsiClass aClass = PsiUtil.resolveClassInType(expression.getType());
|
||||
if (aClass instanceof PsiTypeParameter) {
|
||||
final PsiTypeParameterListOwner owner = ((PsiTypeParameter)aClass).getOwner();
|
||||
if (owner instanceof PsiClass && myClassSuperClasses.contains(owner)) {
|
||||
myResult = true;
|
||||
PsiType type = expression.getType();
|
||||
if (type != null) {
|
||||
PsiTypesUtil.TypeParameterSearcher searcher = new PsiTypesUtil.TypeParameterSearcher();
|
||||
type.accept(searcher);
|
||||
for (PsiTypeParameter parameter : searcher.getTypeParameters()) {
|
||||
final PsiTypeParameterListOwner owner = parameter.getOwner();
|
||||
if (owner instanceof PsiClass && myClassSuperClasses.contains(owner)) {
|
||||
myResult = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user