diff --git a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java index 23a55d930ba3..5ae875036908 100644 --- a/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/inline/InlineMethodProcessor.java @@ -606,9 +606,9 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor { @NonNls String defaultValue; if (paramType instanceof PsiEllipsisType) { final PsiEllipsisType ellipsisType = (PsiEllipsisType)paramType; - paramType = ellipsisType.toArrayType(); + paramType = callSubstitutor.substitute(ellipsisType.toArrayType()); if (applicabilityLevel == MethodCandidateInfo.ApplicabilityLevel.VARARGS) { - defaultValue = "new " + ellipsisType.getComponentType().getCanonicalText() + "[]{}"; + defaultValue = "new " + ((PsiArrayType)paramType).getComponentType().getCanonicalText() + "[]{}"; } else { defaultValue = PsiTypesUtil.getDefaultValueOfType(paramType); diff --git a/java/java-tests/testData/refactoring/inlineMethod/ArrayTypeInferenceFromVarargs.java b/java/java-tests/testData/refactoring/inlineMethod/ArrayTypeInferenceFromVarargs.java new file mode 100644 index 000000000000..4b74065686c0 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/ArrayTypeInferenceFromVarargs.java @@ -0,0 +1,9 @@ +class Test { + void doSmth(T... ps) { + System.out.println(ps); + } + + void m() { + doSmth(1, 2, 3); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineMethod/ArrayTypeInferenceFromVarargs.java.after b/java/java-tests/testData/refactoring/inlineMethod/ArrayTypeInferenceFromVarargs.java.after new file mode 100644 index 000000000000..483a7e0443db --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineMethod/ArrayTypeInferenceFromVarargs.java.after @@ -0,0 +1,6 @@ +class Test { + + void m() { + System.out.println(new Integer[]{1, 2, 3}); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java index 21e5c85695bf..38740d0aa0a7 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/inline/InlineMethodTest.java @@ -165,6 +165,10 @@ public class InlineMethodTest extends LightCodeInsightTestCase { doTest(); } + public void testArrayTypeInferenceFromVarargs() throws Exception { + doTest(); + } + private void doTest() throws Exception { String name = getTestName(false); @NonNls String fileName = "/refactoring/inlineMethod/" + name + ".java";