diff options
4 files changed, 41 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java index 6c0e99b508..5f8d49dba8 100644 --- a/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java +++ b/org.eclipse.jdt.core.manipulation/core extension/org/eclipse/jdt/internal/corext/refactoring/code/flow/FlowAnalyzer.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2019 IBM Corporation and others. + * Copyright (c) 2000, 2021 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -49,6 +49,7 @@ import org.eclipse.jdt.core.dom.EnhancedForStatement; import org.eclipse.jdt.core.dom.EnumConstantDeclaration; import org.eclipse.jdt.core.dom.EnumDeclaration; import org.eclipse.jdt.core.dom.Expression; +import org.eclipse.jdt.core.dom.ExpressionMethodReference; import org.eclipse.jdt.core.dom.ExpressionStatement; import org.eclipse.jdt.core.dom.FieldAccess; import org.eclipse.jdt.core.dom.FieldDeclaration; @@ -1070,6 +1071,9 @@ abstract class FlowAnalyzer extends GenericVisitor { MessageSendFlowInfo info= createMessageSendFlowInfo(); setFlowInfo(node, info); for (Expression arg : arguments) { + if (arg instanceof ExpressionMethodReference) { + arg= ((ExpressionMethodReference)arg).getExpression(); + } info.mergeArgument(getFlowInfo(arg), fFlowContext); } info.mergeReceiver(getFlowInfo(receiver), fFlowContext); diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_in/A_test327.java b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_in/A_test327.java new file mode 100644 index 0000000000..e62aabba54 --- /dev/null +++ b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_in/A_test327.java @@ -0,0 +1,13 @@ +package lambdaExpression18_in; + +import java.util.List; + +public class C1 { + void doIt() { + List<String> list= List.of("a", "b"); + String search = "b"; + + /*[*/final boolean isFound = list.stream() + .anyMatch(search::equals);/*]*/ + } +}
\ No newline at end of file diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test327.java b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test327.java new file mode 100644 index 0000000000..034c6af5af --- /dev/null +++ b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test327.java @@ -0,0 +1,17 @@ +package lambdaExpression18_in; + +import java.util.List; + +public class C1 { + void doIt() { + List<String> list= List.of("a", "b"); + String search = "b"; + + extracted(list, search); + } + + private void extracted(List<String> list, String search) { + /*[*/final boolean isFound = list.stream() + .anyMatch(search::equals);/*]*/ + } +}
\ No newline at end of file diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests1d8.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests1d8.java index e2bdf962be..88702f9bf8 100644 --- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests1d8.java +++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests1d8.java @@ -321,4 +321,10 @@ public class ExtractMethodTests1d8 extends ExtractMethodTests { public void test326() throws Exception { lambdaExpressionTest(0, Modifier.PUBLIC); } + + @Test + public void test327() throws Exception { + lambdaExpressionTest(0, Modifier.PRIVATE); + } + } |