diff --git a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java index 3af9924f33e0..d39b86336114 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/InlineUtil.java @@ -160,6 +160,9 @@ public class InlineUtil { if (typeElement == null) { typeElement = factory.createTypeElement(variable.getType()); } + else if (typeElement.isInferredType()) { + return expr; + } castTypeElement.replace(typeElement); final PsiExpression operand = cast.getOperand(); assert operand != null; diff --git a/java/java-tests/testData/refactoring/inlineLocal/NoCastWithVar.java b/java/java-tests/testData/refactoring/inlineLocal/NoCastWithVar.java new file mode 100644 index 000000000000..e147cd3309be --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/NoCastWithVar.java @@ -0,0 +1,11 @@ + +import java.util.Arrays; +import java.util.stream.Stream; + +class Main { + public static void main(String[] args) { + var stream1 = Stream.of(Arrays.asList("1"), Arrays.asList(1)); + var stream2 = stream1.map(list -> list); + + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/inlineLocal/NoCastWithVar.java.after b/java/java-tests/testData/refactoring/inlineLocal/NoCastWithVar.java.after new file mode 100644 index 000000000000..4981227d3d37 --- /dev/null +++ b/java/java-tests/testData/refactoring/inlineLocal/NoCastWithVar.java.after @@ -0,0 +1,10 @@ + +import java.util.Arrays; +import java.util.stream.Stream; + +class Main { + public static void main(String[] args) { + var stream2 = Stream.of(Arrays.asList("1"), Arrays.asList(1)).map(list -> list); + + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java index a4e8216bcc7a..e0063cd7aac5 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/inline/InlineLocalTest.java @@ -189,40 +189,30 @@ public class InlineLocalTest extends LightCodeInsightTestCase { } public void testLambdaExpr() { - doTest(true); + doTest(true, LanguageLevel.JDK_1_8); } public void testLambdaExprAsRefQualifier() { - doTest(true); + doTest(true, LanguageLevel.JDK_1_8); } public void testMethodRefAsRefQualifier() { - doTest(true); + doTest(true, LanguageLevel.JDK_1_8); } public void testLocalVarInsideLambdaBody() { - doTest(true); + doTest(true, LanguageLevel.JDK_1_8); } public void testLocalVarInsideLambdaBody1() { - doTest(true); + doTest(true, LanguageLevel.JDK_1_8); } - public void testLocalVarInsideLambdaBody2() { - doTest(true); - } - - public void testLocalVarUsedInLambdaBody() { - doTest(true); - } - - public void testCastAroundLambda() { - doTest(true); - } - - public void testNoCastAroundLambda() { - doTest(true); - } + public void testLocalVarInsideLambdaBody2() { doTest(true, LanguageLevel.JDK_1_8); } + public void testLocalVarUsedInLambdaBody() { doTest(true, LanguageLevel.JDK_1_8); } + public void testCastAroundLambda() { doTest(true, LanguageLevel.JDK_1_8); } + public void testNoCastAroundLambda() { doTest(true, LanguageLevel.JDK_1_8); } + public void testNoCastWithVar() { doTest(true, LanguageLevel.JDK_10); } public void testUncheckedCast() { doTest(true); @@ -320,7 +310,11 @@ public class InlineLocalTest extends LightCodeInsightTestCase { } private void doTest(final boolean inlineDef) { - setLanguageLevel(LanguageLevel.JDK_1_7); + doTest(inlineDef, LanguageLevel.JDK_1_7); + } + + private void doTest(final boolean inlineDef, LanguageLevel languageLevel) { + setLanguageLevel(languageLevel); String name = getTestName(false); String fileName = "/refactoring/inlineLocal/" + name + ".java"; configureByFile(fileName);