mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
type migration: type parameters migration class resolving fixed
This commit is contained in:
+2
-31
@@ -88,9 +88,10 @@ public class ClassTypeArgumentMigrationProcessor {
|
||||
}
|
||||
});
|
||||
|
||||
final PsiClass resolvedClass = (PsiClass) referenceParameterList.getParent().getParent();
|
||||
final PsiClass resolvedClass = (PsiClass)((PsiJavaCodeReferenceElement)referenceParameterList.getParent()).resolve();;
|
||||
LOG.assertTrue(resolvedClass != null);
|
||||
final Set<PsiClass> superClasses = new HashSet<PsiClass>();
|
||||
superClasses.add(resolvedClass);
|
||||
InheritanceUtil.getSuperClasses(resolvedClass, superClasses, true);
|
||||
for (PsiClass superSuperClass : superClasses) {
|
||||
final TypeParameterSearcher parameterSearcher = new TypeParameterSearcher(superSuperClass.getTypeParameters());
|
||||
@@ -131,36 +132,6 @@ public class ClassTypeArgumentMigrationProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
private static PsiSubstitutor composeSubstitutor(final Project project, final PsiType migrationType, final Map<PsiClass, PsiTypeParameter[]> visibleTypeParams) {
|
||||
PsiSubstitutor substitutor = PsiSubstitutor.EMPTY;
|
||||
final PsiResolveHelper psiResolveHelper = JavaPsiFacade.getInstance(project).getResolveHelper();
|
||||
for (Map.Entry<PsiClass,PsiTypeParameter[]> entry : visibleTypeParams.entrySet()) {
|
||||
final PsiClassType clearedOriginalType = JavaPsiFacade.getElementFactory(project).createType(entry.getKey(), PsiSubstitutor.EMPTY);
|
||||
for (PsiTypeParameter parameter : entry.getValue()) {
|
||||
substitutor = substitutor.put(parameter,
|
||||
psiResolveHelper.getSubstitutionForTypeParameter(parameter, clearedOriginalType, migrationType, true, clearedOriginalType.getLanguageLevel()));
|
||||
}
|
||||
}
|
||||
return substitutor;
|
||||
}
|
||||
|
||||
private static Map<PsiClass, PsiTypeParameter[]> getTypeParametersHierarchy(final PsiReferenceParameterList referenceParameterList) {
|
||||
final PsiElement parent = referenceParameterList.getParent();
|
||||
LOG.assertTrue(parent instanceof PsiJavaCodeReferenceElement);
|
||||
final PsiClass superClass = (PsiClass)((PsiJavaCodeReferenceElement)parent).resolve();
|
||||
LOG.assertTrue(superClass != null);
|
||||
|
||||
final Map<PsiClass, PsiTypeParameter[]> visibleTypeParams = new HashMap<PsiClass, PsiTypeParameter[]>();
|
||||
visibleTypeParams.put(superClass, superClass.getTypeParameters());
|
||||
|
||||
final HashSet<PsiClass> superClasses = new HashSet<PsiClass>();
|
||||
InheritanceUtil.getSuperClasses(superClass, superClasses, true);
|
||||
for (PsiClass superSuperClass : superClasses) {
|
||||
visibleTypeParams.put(superSuperClass, superSuperClass.getTypeParameters());
|
||||
}
|
||||
return visibleTypeParams;
|
||||
}
|
||||
|
||||
/**
|
||||
* signature should be changed for methods with type parameters
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user