diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java index cb330b1d0151..3160a2bb45c3 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/FieldFromParameterUtils.java @@ -87,7 +87,9 @@ public final class FieldFromParameterUtils { PsiSubstitutor subst = PsiSubstitutor.EMPTY; for (PsiTypeParameter usedTypeParameter : usedTypeParameters) { - subst = subst.put(usedTypeParameter, TypeConversionUtil.typeParameterErasure(usedTypeParameter)); + final PsiType bound = TypeConversionUtil.typeParameterErasure(usedTypeParameter); + final PsiManager manager = usedTypeParameter.getManager(); + subst = subst.put(usedTypeParameter, bound == null ? PsiWildcardType.createUnbounded(manager) : bound.equalsToText(CommonClassNames.JAVA_LANG_OBJECT) ? bound : PsiWildcardType.createExtends(manager, bound)); } PsiSubstitutor substitutor = PsiSubstitutor.EMPTY; @@ -98,7 +100,7 @@ public final class FieldFromParameterUtils { } if (psiClass instanceof PsiTypeParameter) { - return subst.substitute((PsiTypeParameter)psiClass); + return GenericsUtil.getVariableTypeByExpressionType(subst.substitute((PsiTypeParameter)psiClass)); } else { return JavaPsiFacade.getElementFactory(parameter.getProject()).createType(psiClass, substitutor); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java index 0ed9fed27e31..5cc0f01edc22 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromParameter/afterBoundListTypeParameter.java @@ -2,7 +2,7 @@ import java.util.*; class Test{ - private List myP1; + private List myP1; void f(List p1){ myP1 = p1;