From ba1ac92dee64e593e7355248d329b7bf385c40f6 Mon Sep 17 00:00:00 2001 From: Maxim Medvedev Date: Tue, 4 Oct 2011 17:35:31 +0400 Subject: [PATCH] IDEA-74716 Groovy: IOE at PsiJavaParserFacadeImpl.createExpressionFromText() on Change Signature Refactoring -> Add Parameter without default value, if method is used in Java code --- .../groovy/refactoring/changeSignature/GrParameterInfo.java | 3 +-- .../refactoring/changeSignature/ChangeSignatureTest.java | 4 ++++ .../changeSignature/DefaultInitializerInJava.groovy | 3 +++ .../changeSignature/DefaultInitializerInJava.java | 5 +++++ .../changeSignature/DefaultInitializerInJava_after.groovy | 3 +++ .../changeSignature/DefaultInitializerInJava_after.java | 5 +++++ 6 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.groovy create mode 100644 plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.java create mode 100644 plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.groovy create mode 100644 plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.java diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrParameterInfo.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrParameterInfo.java index 270135255e79..5b81388bc112 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrParameterInfo.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/changeSignature/GrParameterInfo.java @@ -103,8 +103,7 @@ public class GrParameterInfo implements JavaParameterInfo { } public PsiExpression getValue(PsiCallExpression callExpression) { - return JavaPsiFacade.getInstance(callExpression.getProject()).getElementFactory() - .createExpressionFromText(myDefaultValue, callExpression); + return JavaPsiFacade.getElementFactory(callExpression.getProject()).createExpressionFromText(getDefaultValue(), callExpression); } public boolean isVarargType() { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java index cfbfa451cb2d..316e605459ff 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/changeSignature/ChangeSignatureTest.java @@ -240,6 +240,10 @@ public class ChangeSignatureTest extends ChangeSignatureTestCase { doTest(new SimpleInfo("newName", 0), new SimpleInfo(1)); } + public void testDefaultInitializerInJava() { + doTest(new SimpleInfo("p", -1, "", "1", "")); + } + private PsiType createType(String typeText) { return JavaPsiFacade.getElementFactory(getProject()).createTypeByFQClassName(typeText, GlobalSearchScope.allScope(getProject())); } diff --git a/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.groovy b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.groovy new file mode 100644 index 000000000000..7ae2a99dca0b --- /dev/null +++ b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.groovy @@ -0,0 +1,3 @@ +class GClass { + public void test() {} +} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.java b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.java new file mode 100644 index 000000000000..5fdb3fed54fb --- /dev/null +++ b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava.java @@ -0,0 +1,5 @@ +public class JClass { + void doTest() { + new GClass().test(); + } +} diff --git a/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.groovy b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.groovy new file mode 100644 index 000000000000..a96448e49cf8 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.groovy @@ -0,0 +1,3 @@ +class GClass { + public test(def p = 1) {} +} \ No newline at end of file diff --git a/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.java b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.java new file mode 100644 index 000000000000..81b19989d6e8 --- /dev/null +++ b/plugins/groovy/testdata/refactoring/changeSignature/DefaultInitializerInJava_after.java @@ -0,0 +1,5 @@ +public class JClass { + void doTest() { + new GClass().test(1); + } +}