From 3d193d5519df6b3b4c8deaa0f15434d700fd896d Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Wed, 25 Mar 2015 19:59:00 +0300 Subject: [PATCH] Prevent insertion of redundant import statement in the original file of moved element It happens if we move global variable that references itself, e.g. VAR = lambda: VAR. Redundant import was optimized out at the end of refactoring though. --- .../python/refactoring/move/PyMoveModuleMembersProcessor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/src/com/jetbrains/python/refactoring/move/PyMoveModuleMembersProcessor.java b/python/src/com/jetbrains/python/refactoring/move/PyMoveModuleMembersProcessor.java index f8df8b4a7991..80eab8d1293a 100644 --- a/python/src/com/jetbrains/python/refactoring/move/PyMoveModuleMembersProcessor.java +++ b/python/src/com/jetbrains/python/refactoring/move/PyMoveModuleMembersProcessor.java @@ -245,7 +245,8 @@ public class PyMoveModuleMembersProcessor extends BaseRefactoringProcessor { PyClassRefactoringUtil.updateImportOfElement(importStmt, newElement); } final PsiFile usageFile = usage.getContainingFile(); - if (usageFile == oldElement.getContainingFile() && !PsiTreeUtil.isAncestor(oldElement, usage, false)) { + final PsiElement oldElementBody = PyMoveModuleMembersHelper.expandNamedElementBody(oldElement); + if (usageFile == oldElement.getContainingFile() && !PsiTreeUtil.isAncestor(oldElementBody, usage, false)) { PyClassRefactoringUtil.insertImport(oldElement, newElement); } if (resolvesToLocalStarImport(usage)) {