From 574577fe730721929b7fbd5cf71166ade619817b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 14 Jan 2015 18:27:57 +0100 Subject: [PATCH] introduce functional parameter: do not fold as functional interface creation would be in the place where local vars are not available --- .../IntroduceParameterHandler.java | 5 ++++ .../afterEnsureNotFolded.java | 27 +++++++++++++++++++ .../beforeEnsureNotFolded.java | 20 ++++++++++++++ .../IntroduceFunctionalParameterTest.java | 4 +++ 4 files changed, 56 insertions(+) create mode 100644 java/java-tests/testData/refactoring/introduceFunctionalParameter/afterEnsureNotFolded.java create mode 100644 java/java-tests/testData/refactoring/introduceFunctionalParameter/beforeEnsureNotFolded.java diff --git a/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterHandler.java b/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterHandler.java index ec7fe89d622a..ba60d3378e85 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceParameter/IntroduceParameterHandler.java @@ -704,6 +704,11 @@ public class IntroduceParameterHandler extends IntroduceHandlerBase { return false; } + @Override + protected boolean isFoldingApplicable() { + return false; + } + @Override public boolean prepare(@Nullable Pass pass) throws PrepareFailedException { final boolean prepare = super.prepare(pass); diff --git a/java/java-tests/testData/refactoring/introduceFunctionalParameter/afterEnsureNotFolded.java b/java/java-tests/testData/refactoring/introduceFunctionalParameter/afterEnsureNotFolded.java new file mode 100644 index 000000000000..b993040d6bd8 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceFunctionalParameter/afterEnsureNotFolded.java @@ -0,0 +1,27 @@ +import java.util.function.Function; + +class Test { + + { + final int[] equals = new int[0]; + performTest(new Function() { + public String[] apply(String[] fields) { + System.out.println(); + return getIndexed(fields, equals); + } + }); + } + + private static void performTest(Function anObject) { + String[] fields = new String[0]; + + final String[] indexed = anObject.apply(fields); + + System.out.println(indexed); + } + + private static String[] getIndexed(String[] fields, int[] indices) { + return new String[indices.length]; + } + +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceFunctionalParameter/beforeEnsureNotFolded.java b/java/java-tests/testData/refactoring/introduceFunctionalParameter/beforeEnsureNotFolded.java new file mode 100644 index 000000000000..bf6583dd6d98 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceFunctionalParameter/beforeEnsureNotFolded.java @@ -0,0 +1,20 @@ +class Test { + + { + performTest(new int[0]); + } + + private static void performTest(int[] equals) { + String[] fields = new String[0]; + + System.out.println(); + final String[] indexed = getIndexed(fields, equals); + + System.out.println(indexed); + } + + private static String[] getIndexed(String[] fields, int[] indices) { + return new String[indices.length]; + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFunctionalParameterTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFunctionalParameterTest.java index 31c26e2ae2cd..2f9702d095e1 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFunctionalParameterTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFunctionalParameterTest.java @@ -53,6 +53,10 @@ public class IntroduceFunctionalParameterTest extends LightRefactoringTestCase doTest(); } + public void testEnsureNotFolded() throws Exception { + doTest(); + } + @NotNull @Override protected String getTestDataPath() {