diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyCommonClassNames.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyCommonClassNames.java index 7d0e19ff9292..e8db576c5b39 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyCommonClassNames.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GroovyCommonClassNames.java @@ -15,6 +15,8 @@ */ package org.jetbrains.plugins.groovy.lang.psi.util; +import org.jetbrains.annotations.NonNls; + /** * @author Maxim.Medvedev */ @@ -32,6 +34,7 @@ public final class GroovyCommonClassNames { public static final String JAVA_UTIL_REGEX_PATTERN = "java.util.regex.Pattern"; public static final String JAVA_MATH_BIG_DECIMAL = "java.math.BigDecimal"; public static final String JAVA_MATH_BIG_INTEGER = "java.math.BigInteger"; + @NonNls public static final String ORG_CODEHAUS_GROOVY_RUNTIME_METHOD_CLOSURE = "org.codehaus.groovy.runtime.MethodClosure"; private GroovyCommonClassNames() { } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java index babcf42555e9..e8c977817f66 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/convertToJava/ExpressionGenerator.java @@ -486,6 +486,14 @@ public class ExpressionGenerator extends Generator { GrExpression qualifierToUse = qualifier; + if (type == GroovyTokenTypes.mMEMBER_POINTER) { + LOG.assertTrue(qualifier != null); + builder.append("new ").append(GroovyCommonClassNames.ORG_CODEHAUS_GROOVY_RUNTIME_METHOD_CLOSURE).append("("); + qualifier.accept(this); + builder.append(", ").append(referenceExpression.getReferenceName()).append(')'); + return; + } + if (type == GroovyTokenTypes.mOPTIONAL_DOT) { LOG.assertTrue(qualifier != null); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy index 669155ccc9ed..cde1f475cd0f 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/convertToJava/CodeBlockGenerationTest.groovy @@ -60,7 +60,7 @@ public class CodeBlockGenerationTest extends LightCodeInsightFixtureTestCase { } private void doTest() { - final String testName = getTestName(false) + final String testName = getTestName(true) final PsiFile file = myFixture.configureByFile(testName + ".groovy"); assertInstanceOf file, GroovyFile @@ -104,4 +104,6 @@ class MyCat { doTest() } + + void testMemberPointer() {doTest()} } diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/memberPointer.groovy b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/memberPointer.groovy new file mode 100644 index 000000000000..04e28a65ee22 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/memberPointer.groovy @@ -0,0 +1,2 @@ +def a = new ArrayList().&add +a("2") \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/memberPointer.java b/plugins/groovy/testdata/refactoring/convertGroovyToJava/codeBlock/memberPointer.java new file mode 100644 index 000000000000..e69de29bb2d1