From 6cece786ce8a12863ee3f76b3f6e50b02f9a18cd Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Fri, 22 Feb 2013 16:16:27 +0400 Subject: [PATCH] IDEA-99663 Groovy: method inlining with parameters of same package type --- .../inline/GroovyInlineMethodUtil.java | 9 ++++---- .../inline/GroovyMethodInliner.java | 2 +- .../inline/InlineMethodTest.groovy | 4 ++++ .../typeParameterDeclaredInFile.test | 23 +++++++++++++++++++ 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 plugins/groovy/testdata/groovy/refactoring/inlineMethod/typeParameterDeclaredInFile.test diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java index 57a0d49fa041..72ee582fa409 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyInlineMethodUtil.java @@ -16,7 +16,7 @@ package org.jetbrains.plugins.groovy.refactoring.inline; -import com.intellij.codeInsight.TargetElementUtil; +import com.intellij.codeInsight.TargetElementUtilBase; import com.intellij.lang.refactoring.InlineHandler; import com.intellij.openapi.application.Application; import com.intellij.openapi.application.ApplicationManager; @@ -25,7 +25,7 @@ import com.intellij.openapi.help.HelpManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.wm.WindowManager; import com.intellij.psi.*; -import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.search.LocalSearchScope; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.HelpID; @@ -81,7 +81,7 @@ public class GroovyInlineMethodUtil { } if (invokedOnReference) { - PsiReference reference = editor != null ? TargetElementUtil.findReference(editor, editor.getCaretModel().getOffset()) : null; + PsiReference reference = editor != null ? TargetElementUtilBase.findReference(editor, editor.getCaretModel().getOffset()) : null; if (reference == null) return InlineHandler.Settings.CANNOT_INLINE_SETTINGS; PsiElement element = reference.getElement(); @@ -534,8 +534,7 @@ public class GroovyInlineMethodUtil { GrCallExpression call, GrExpression oldExpression, GrParameter parameter) { - Collection refs = - ReferencesSearch.search(parameter, GlobalSearchScope.projectScope(parameter.getProject()), false).findAll(); + Collection refs = ReferencesSearch.search(parameter, new LocalSearchScope(method), false).findAll(); final GroovyPsiElementFactory elementFactory = GroovyPsiElementFactory.getInstance(call.getProject()); GrExpression expression = elementFactory.createExpressionFromText(oldExpression.getText()); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java index 46c7daca121a..5e76f0c6fcbe 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/refactoring/inline/GroovyMethodInliner.java @@ -352,7 +352,7 @@ public class GroovyMethodInliner implements InlineHandler.Inliner { method = ((GrReflectedMethod)method).getBaseMethod(); } - GrMethod newMethod = factory.createMethodFromText(method.getText()); + GrMethod newMethod = factory.createMethodFromText(method.getText(), call); if (qualifier != null) { Collection infos = GroovyInlineMethodUtil.collectReferenceInfo(method); GroovyInlineMethodUtil.addQualifiersToInnerReferences(newMethod, infos, qualifier); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy index b2fec60e65ca..1c2d29c5979b 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/inline/InlineMethodTest.groovy @@ -100,6 +100,10 @@ public class InlineMethodTest extends LightCodeInsightFixtureTestCase { public void testVarargs() {doTest();} + public void testTypeParameterDeclaredInFile() { + doTest() + } + public void testInlineAll() { doTest(new GroovyInlineHandler() { @Override diff --git a/plugins/groovy/testdata/groovy/refactoring/inlineMethod/typeParameterDeclaredInFile.test b/plugins/groovy/testdata/groovy/refactoring/inlineMethod/typeParameterDeclaredInFile.test new file mode 100644 index 000000000000..ffeec3422041 --- /dev/null +++ b/plugins/groovy/testdata/groovy/refactoring/inlineMethod/typeParameterDeclaredInFile.test @@ -0,0 +1,23 @@ +class X { + interface GrAnnotation {} + + static void getResolvedAnnotations(GrAnnotation annotation) { + coll(annotation) + } + + static void coll(GrAnnotation alias) { + alias + } +} +----- +class X { + interface GrAnnotation {} + + static void getResolvedAnnotations(GrAnnotation annotation) { + annotation + } + + static void coll(GrAnnotation alias) { + alias + } +} \ No newline at end of file