Fixed bug 407985: [1.8][extract method] Extract Method refactoring from
Lambda Expressions - updated tests and bug fix
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_in/A_test325.java b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_in/A_test325.java
new file mode 100644
index 0000000..1113415
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_in/A_test325.java
@@ -0,0 +1,16 @@
+package lambdaExpression18_in;
+
+@FunctionalInterface
+interface FI {
+ int foo1(int a);
+}
+
+class FI_1 {
+ void fun(int a) {
+ FI i1 = x1-> x1;
+ FI i2 = xxx-> {
+ i1.foo1(a);
+ /*]*/return xxx;/*[*/
+ };
+ }
+}
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test306.java b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test306.java
index 803baed..5f97216 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test306.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test306.java
@@ -13,5 +13,8 @@
};
}
- public default int extracted(int a){/*[*/int b = a;/*]*/return b;}
+ public default int extracted(int a) {
+ /*[*/int b = a;/*]*/
+ return b;
+ }
}
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test317.java b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test317.java
index 6c2ba02..000c794 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test317.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test317.java
@@ -11,5 +11,7 @@
return "";
}
- default int extracted(int a){return a++;}
+ default int extracted(int a) {
+ return a++;
+ }
}
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test325.java b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test325.java
new file mode 100644
index 0000000..43b31fc
--- /dev/null
+++ b/org.eclipse.jdt.ui.tests.refactoring/resources/ExtractMethodWorkSpace/ExtractMethodTests/lambdaExpression18_out/A_test325.java
@@ -0,0 +1,20 @@
+package lambdaExpression18_in;
+
+@FunctionalInterface
+interface FI {
+ int foo1(int a);
+}
+
+class FI_1 {
+ void fun(int a) {
+ FI i1 = x1-> x1;
+ FI i2 = xxx-> {
+ i1.foo1(a);
+ /*]*/return extracted(xxx);/*[*/
+ };
+ }
+
+ private int extracted(int xxx) {
+ return xxx;
+ }
+}
\ No newline at end of file
diff --git a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests18.java b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests18.java
index 6800f07..43eb52e 100644
--- a/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests18.java
+++ b/org.eclipse.jdt.ui.tests.refactoring/test cases/org/eclipse/jdt/ui/tests/refactoring/ExtractMethodTests18.java
@@ -234,4 +234,8 @@
public void test324() throws Exception {
performTest(fgTestSetup.getLambdaExpressionPackage(), "A", VALID_SELECTION, null);
}
+
+ public void test325() throws Exception {
+ lambdaExpressionTest(0, Modifier.PRIVATE);
+ }
}
diff --git a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java
index 11f2e25..bfccedf 100644
--- a/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java
+++ b/org.eclipse.jdt.ui/core refactoring/org/eclipse/jdt/internal/corext/refactoring/code/ExtractMethodAnalyzer.java
@@ -312,10 +312,12 @@
LambdaExpression enclosingLambdaExpr= ASTResolving.findEnclosingLambdaExpression(getFirstSelectedNode());
if (enclosingLambdaExpr != null) {
fReturnType= ASTNodeFactory.newReturnType(enclosingLambdaExpr, ast, rewriter, null);
+ IMethodBinding methodBinding= enclosingLambdaExpr.resolveMethodBinding();
+ fReturnTypeBinding= methodBinding != null ? methodBinding.getReturnType() : null;
} else if (fEnclosingBodyDeclaration.getNodeType() == ASTNode.METHOD_DECLARATION) {
fReturnType= ((MethodDeclaration) fEnclosingBodyDeclaration).getReturnType2();
+ fReturnTypeBinding= fReturnType != null ? fReturnType.resolveBinding() : null;
}
- fReturnTypeBinding= fReturnType != null ? fReturnType.resolveBinding() : null;
break;
default:
fReturnType= ast.newPrimitiveType(PrimitiveType.VOID);