collect transitive dependant type parameters (IDEA-174194)

This commit is contained in:
Anna Kozlova
2017-06-09 18:33:06 +03:00
parent dd28a2fd16
commit b18d182cc8
3 changed files with 17 additions and 3 deletions
@@ -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);
}
}