From e0aa800bd12e6fc493a15f6b65f087339079992e Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 18 Nov 2014 18:13:30 +0100 Subject: [PATCH] wrap return value: ignore lambda return --- .../wrapreturnvalue/WrapReturnValueProcessor.java | 2 +- .../wrapReturnValue/withLambdaInside/after/Test.java | 12 ++++++++++++ .../withLambdaInside/after/Wrapper.java | 10 ++++++++++ .../withLambdaInside/before/Test.java | 12 ++++++++++++ .../withLambdaInside/before/Wrapper.java | 10 ++++++++++ .../intellij/refactoring/WrapReturnValueTest.java | 2 ++ 6 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Test.java create mode 100644 java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Wrapper.java create mode 100644 java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Test.java create mode 100644 java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Wrapper.java diff --git a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java index 31dedf13d170..f7e10cbddd2a 100644 --- a/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/wrapreturnvalue/WrapReturnValueProcessor.java @@ -179,7 +179,7 @@ public class WrapReturnValueProcessor extends FixableUsagesRefactoringProcessor @Override public void visitReturnStatement(final PsiReturnStatement statement) { super.visitReturnStatement(statement); - if (PsiTreeUtil.getParentOfType(statement, PsiMethod.class) != myMethod) return; + if (PsiTreeUtil.getParentOfType(statement, PsiMethod.class, PsiLambdaExpression.class) != myMethod) return; final PsiExpression returnValue = statement.getReturnValue(); if (returnValue != null) { returnTypes.add(returnValue.getType()); diff --git a/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Test.java b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Test.java new file mode 100644 index 000000000000..34f936e71d65 --- /dev/null +++ b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Test.java @@ -0,0 +1,12 @@ +class Test { + Wrapper foo() { + I i = () -> { + return 1; + }; + return new Wrapper(""); + } +} + +interface I { + Integer bar(); +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Wrapper.java b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Wrapper.java new file mode 100644 index 000000000000..822c9b8fc778 --- /dev/null +++ b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/after/Wrapper.java @@ -0,0 +1,10 @@ +class Wrapper { + String myField; + Wrapper(String s) { + myField = s; + } + + String getMyField() { + return myField; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Test.java b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Test.java new file mode 100644 index 000000000000..555c7986ba32 --- /dev/null +++ b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Test.java @@ -0,0 +1,12 @@ +class Test { + String foo() { + I i = () -> { + return 1; + }; + return ""; + } +} + +interface I { + Integer bar(); +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Wrapper.java b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Wrapper.java new file mode 100644 index 000000000000..822c9b8fc778 --- /dev/null +++ b/java/java-tests/testData/refactoring/wrapReturnValue/withLambdaInside/before/Wrapper.java @@ -0,0 +1,10 @@ +class Wrapper { + String myField; + Wrapper(String s) { + myField = s; + } + + String getMyField() { + return myField; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java b/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java index 01c5907754f1..b1efc20c4523 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/WrapReturnValueTest.java @@ -15,6 +15,7 @@ */ package com.intellij.refactoring; +import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiField; @@ -55,6 +56,7 @@ public class WrapReturnValueTest extends MultiFileTestCase { public void testRawReturnType() { doTest(true, "Existing class does not have appropriate constructor"); } public void testReturnInsideLambda() { doTest(false, null, true); } public void testTypeAnnotations() { doTest(false); } + public void testWithLambdaInside() { doTest(true); } private void doTest(final boolean existing) { doTest(existing, null);