diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java index 15901dd28f94..4f0a29eb10b7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/AddTypeArgumentsFix.java @@ -71,7 +71,7 @@ public class AddTypeArgumentsFix extends MethodArgumentFix { PsiTypeParameter typeParameter = typeParameters[i]; final PsiType substitution = helper.getSubstitutionForTypeParameter(typeParameter, returnType, toType, false, level); if (substitution == null || PsiType.NULL.equals(substitution)) return null; - mappings[i] = substitution; + mappings[i] = GenericsUtil.eliminateWildcards(substitution); } final PsiElementFactory factory = JavaPsiFacade.getInstance(expression.getProject()).getElementFactory(); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeArguments/afterWildcards.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeArguments/afterWildcards.java new file mode 100644 index 000000000000..c9098aba06cd --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeArguments/afterWildcards.java @@ -0,0 +1,18 @@ +// "Add explicit type arguments" "true" +class X { } + +class D { + public X f() { + return null; + } +} + +class Z { + public void f() { + g(new D().f()); + } + + public void g(X x) { + + } +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeArguments/beforeWildcards.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeArguments/beforeWildcards.java new file mode 100644 index 000000000000..93a567496bad --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addTypeArguments/beforeWildcards.java @@ -0,0 +1,18 @@ +// "Add explicit type arguments" "true" +class X { } + +class D { + public X f() { + return null; + } +} + +class Z { + public void f() { + g(new D().f()); + } + + public void g(X x) { + + } +}