mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
collect transitive dependant type parameters (IDEA-174194)
This commit is contained in:
@@ -1327,6 +1327,8 @@ public class RefactoringUtil {
|
||||
|
||||
}
|
||||
|
||||
collectTypeParametersInDependencies(filter, used);
|
||||
|
||||
if (fromList != null) {
|
||||
used.retainAll(Arrays.asList(fromList.getTypeParameters()));
|
||||
}
|
||||
@@ -1352,6 +1354,18 @@ public class RefactoringUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private static void collectTypeParametersInDependencies(Condition<PsiTypeParameter> filter, Set<PsiTypeParameter> used) {
|
||||
HashSet<PsiTypeParameter> typeParametersInDependencies = new HashSet<>();
|
||||
for (PsiTypeParameter parameter : used) {
|
||||
collectTypeParameters(typeParametersInDependencies, parameter, filter);
|
||||
}
|
||||
typeParametersInDependencies.removeAll(used);
|
||||
if (!typeParametersInDependencies.isEmpty()) {
|
||||
collectTypeParametersInDependencies(filter, typeParametersInDependencies);
|
||||
used.addAll(typeParametersInDependencies);
|
||||
}
|
||||
}
|
||||
|
||||
public static void collectTypeParameters(final Set<PsiTypeParameter> used, final PsiElement element) {
|
||||
collectTypeParameters(used, element, Conditions.alwaysTrue());
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Test {
|
||||
protected <T> void applyChanges(final T variable) {
|
||||
protected <T extends java.util.List<K>, K> void applyChanges(final T variable) {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Test {
|
||||
protected <T> void applyChanges(final T variable) {
|
||||
protected <T extends java.util.List<K>, K> void applyChanges(final T variable) {
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -9,7 +9,7 @@ class Test {
|
||||
;
|
||||
}
|
||||
|
||||
private <T> void newMethod(T variable) {
|
||||
private <T extends java.util.List<K>, K> void newMethod(T variable) {
|
||||
System.out.println(variable);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user