diff --git a/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java b/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java index 99bfa4addb85..898d9d04bd28 100644 --- a/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/UsefulTestCase.java @@ -938,20 +938,4 @@ public abstract class UsefulTestCase extends TestCase { }.process(test); return testSuite; } - - protected void findHandlerAndDoRename(final String newName, Editor editor, Project project, PsiFile file) { - final DataContext editorContext = ((EditorEx)editor).getDataContext(); - final DataContext context = new DataContext() { - @Override - public Object getData(@NonNls String dataId) { - return PsiElementRenameHandler.DEFAULT_NAME.getName().equals(dataId) - ? newName - : editorContext.getData(dataId); - } - }; - final RenameHandler renameHandler = RenameHandlerRegistry.getInstance().getRenameHandler(context); - assertNotNull(renameHandler); - - renameHandler.invoke(project, editor, file, context); - } } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java index 658b73fa2bcf..6a546467f327 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightTestFixture.java @@ -492,6 +492,13 @@ public interface CodeInsightTestFixture extends IdeaProjectTestFixture { void renameElementAtCaret(@NotNull String newName); + /** + * Renames element at caret using injected {@link com.intellij.refactoring.rename.RenameHandler}s. + * Very close to {@link #renameElementAtCaret(String)} but uses handlers. + * @param newName new name for the element. + */ + void renameElementAtCaretUsingHandler(@NotNull String newName); + void renameElement(@NotNull PsiElement element, @NotNull String newName); void allowTreeAccessForFile(@NotNull VirtualFile file); diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index fc48a3f2d5b7..7bc0f5753a85 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -98,8 +98,7 @@ import com.intellij.psi.search.UsageSearchContext; import com.intellij.psi.stubs.StubUpdatingIndex; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesProcessor; -import com.intellij.refactoring.rename.RenameProcessor; -import com.intellij.refactoring.rename.RenamePsiElementProcessor; +import com.intellij.refactoring.rename.*; import com.intellij.rt.execution.junit.FileComparisonFailure; import com.intellij.testFramework.*; import com.intellij.testFramework.fixtures.*; @@ -689,6 +688,23 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig renameElement(getElementAtCaret(), newName); } + @Override + public void renameElementAtCaretUsingHandler(@NotNull final String newName) { + final DataContext editorContext = ((EditorEx)myEditor).getDataContext(); + final DataContext context = new DataContext() { + @Override + public Object getData(@NonNls final String dataId) { + return PsiElementRenameHandler.DEFAULT_NAME.getName().equals(dataId) + ? newName + : editorContext.getData(dataId); + } + }; + final RenameHandler renameHandler = RenameHandlerRegistry.getInstance().getRenameHandler(context); + assert renameHandler != null: "No handler for this context"; + + renameHandler.invoke(getProject(), myEditor, getFile(), context); + } + @Override public void renameElement(@NotNull final PsiElement element, @NotNull final String newName) { final boolean searchInComments = false; diff --git a/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralExtensionPoint.java b/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralExtensionPoint.java index 3adf05fc0f45..3ac61566c766 100644 --- a/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralExtensionPoint.java +++ b/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralExtensionPoint.java @@ -1,9 +1,8 @@ package com.jetbrains.python.magicLiteral; import com.intellij.openapi.extensions.ExtensionPointName; -import com.jetbrains.python.psi.PyStringLiteralExpression; +import com.jetbrains.python.psi.StringLiteralExpression; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * Any magic literal extension point should imlement this interface and be installed as extesnion point @@ -21,7 +20,7 @@ public interface PyMagicLiteralExtensionPoint { * @param element element to check * @return true if magic. */ - boolean isMagicLiteral(@NotNull PyStringLiteralExpression element); + boolean isMagicLiteral(@NotNull StringLiteralExpression element); /** diff --git a/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralRenameHandler.java b/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralRenameHandler.java index 702adedade2e..c60ce98133c5 100644 --- a/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralRenameHandler.java +++ b/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralRenameHandler.java @@ -25,6 +25,7 @@ import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.rename.RenameDialog; import com.intellij.refactoring.rename.RenameHandler; import com.jetbrains.python.psi.PyStringLiteralExpression; +import com.jetbrains.python.psi.StringLiteralExpression; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -59,7 +60,7 @@ public class PyMagicLiteralRenameHandler implements RenameHandler { if (element instanceof PyStringLiteralExpression) { return element; } - return PsiTreeUtil.getParentOfType(element, PyStringLiteralExpression.class); + return PsiTreeUtil.getParentOfType(element, StringLiteralExpression.class); } @Override diff --git a/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralTools.java b/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralTools.java index 58118a999ff5..d119ec0646dc 100644 --- a/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralTools.java +++ b/python/src/com/jetbrains/python/magicLiteral/PyMagicLiteralTools.java @@ -2,7 +2,7 @@ package com.jetbrains.python.magicLiteral; import com.intellij.openapi.application.ApplicationManager; import com.intellij.psi.PsiElement; -import com.jetbrains.python.psi.PyStringLiteralExpression; +import com.jetbrains.python.psi.StringLiteralExpression; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -23,7 +23,7 @@ public final class PyMagicLiteralTools { * @return true if magic */ public static boolean isMagicLiteral(@NotNull final PsiElement element) { - return (element instanceof PyStringLiteralExpression) && (getPoint((PyStringLiteralExpression)element) != null); + return (element instanceof StringLiteralExpression) && (getPoint((StringLiteralExpression)element) != null); } /** @@ -33,7 +33,7 @@ public final class PyMagicLiteralTools { * @return extension point (if any) or null if literal is unknown to all installed magic literal extesnion points */ @Nullable - public static PyMagicLiteralExtensionPoint getPoint(@NotNull final PyStringLiteralExpression element) { + public static PyMagicLiteralExtensionPoint getPoint(@NotNull final StringLiteralExpression element) { final PyMagicLiteralExtensionPoint[] magicLiteralExtPoints = ApplicationManager.getApplication().getExtensions(PyMagicLiteralExtensionPoint.EP_NAME);