diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateTypeParameterFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateTypeParameterFromUsageFix.java index 56fdf5402d1e..9f860e1a2640 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateTypeParameterFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateTypeParameterFromUsageFix.java @@ -185,7 +185,7 @@ public class CreateTypeParameterFromUsageFix extends BaseIntentionAction { if (element instanceof PsiField && ((PsiField)element).hasModifierProperty(PsiModifier.STATIC)) { break; } - if (element instanceof PsiMethod || element instanceof PsiClass) { + if (element instanceof PsiMethod || (element instanceof PsiClass && !(element instanceof PsiTypeParameter))) { if (((PsiMember)element).getName() != null) { parents.add((PsiNameIdentifierOwner)element); if (findFirstOnly) { diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createTypeParameterFromUsage/afterTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createTypeParameterFromUsage/afterTypeParameter.java new file mode 100644 index 000000000000..d26409fc34e0 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createTypeParameterFromUsage/afterTypeParameter.java @@ -0,0 +1,40 @@ +// "Create type parameter 'U'" "true" + +public class Helpers { + + interface RunAlgebra { + + } + + interface ReturnAlgebra { + + } + + interface SomeAlgebra { + + } + + interface AlgebraImplementation extends ReturnAlgebra, SomeAlgebra { + + } + + public static void giveMeAlgebraImplementation(RunAlgebra algebra) { + + } + + public static > RunAlgebra aReturn() { + return null; + } + + public static > RunAlgebra aReturn(String overload) { + return null; + } + + public static , + AI extends SomeAlgebra, U> RunAlgebra consumeReturn(A returnAlgebra) { + return null; + } + + +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createTypeParameterFromUsage/beforeTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createTypeParameterFromUsage/beforeTypeParameter.java new file mode 100644 index 000000000000..8a76a96210ca --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createTypeParameterFromUsage/beforeTypeParameter.java @@ -0,0 +1,40 @@ +// "Create type parameter 'U'" "true" + +public class Helpers { + + interface RunAlgebra { + + } + + interface ReturnAlgebra { + + } + + interface SomeAlgebra { + + } + + interface AlgebraImplementation extends ReturnAlgebra, SomeAlgebra { + + } + + public static void giveMeAlgebraImplementation(RunAlgebra algebra) { + + } + + public static > RunAlgebra aReturn() { + return null; + } + + public static > RunAlgebra aReturn(String overload) { + return null; + } + + public static >, + AI extends SomeAlgebra> RunAlgebra consumeReturn(A returnAlgebra) { + return null; + } + + +} \ No newline at end of file