From 45cc683033e38124e8621a5a16bc8fbd54c68ca3 Mon Sep 17 00:00:00 2001 From: Mikhail Golubev Date: Thu, 2 Apr 2015 17:37:15 +0300 Subject: [PATCH] PY-10829 Extracted function is inserted *after* the function where it is used I updated test data accordingly and removed now obsolete tests about skipping preceding comments. --- .../extractmethod/PyExtractMethodUtil.java | 17 +++++++++-------- .../extractmethod/BreakAst.after.py | 8 ++++---- .../extractmethod/ClassMethod.after.py | 8 ++++---- .../extractmethod/ClassWithoutInit.after.py | 10 +++++----- .../refactoring/extractmethod/Comment.after.py | 7 ------- .../extractmethod/Comment.before.py | 3 --- .../CommentAfterSelection.after.py | 12 ++++++------ .../DefinedBeforeAccessedAfter.after.py | 10 +++++----- .../extractmethod/DuplicateCheckParam.after.py | 10 +++++----- .../extractmethod/DuplicateInClass.after.py | 6 +++--- .../extractmethod/DuplicateMultiLine.after.py | 10 +++++----- .../extractmethod/DuplicateSingleLine.after.py | 10 +++++----- .../extractmethod/DuplicateWithRename.after.py | 8 ++++---- .../extractmethod/ElseBody.after.py | 12 ++++++------ .../extractmethod/Expression.after.py | 10 +++++----- .../refactoring/extractmethod/File.after.py | 10 +++++----- .../extractmethod/GlobalVarAssignment.after.py | 11 +++++------ .../extractmethod/LocalFunction.after.py | 10 +++++----- ...ocalVarDefinedBeforeModifiedInside.after.py | 18 +++++++++--------- .../extractmethod/MethodContext.after.py | 8 ++++---- .../extractmethod/MethodInIf.after.py | 6 +++--- .../extractmethod/MethodIndent.after.py | 8 ++++---- .../extractmethod/MethodReturn.after.py | 8 ++++---- .../extractmethod/Nonlocal.after.py | 8 ++++---- .../OutNotEmptyStatements.after.py | 14 +++++++------- .../OutNotEmptyStatements2.after.py | 12 ++++++------ .../extractmethod/Parameter.after.py | 8 ++++---- .../refactoring/extractmethod/Py479.after.py | 18 ++++++++++-------- .../extractmethod/ReturnTuple.after.py | 10 +++++----- .../SeveralCommentsAbove.after.py | 9 --------- .../SeveralCommentsAbove.before.py | 6 ------ .../extractmethod/SingleRaise.after.py | 12 ++++++------ .../extractmethod/Statement.after.py | 10 +++++----- .../extractmethod/Statements.after.py | 10 +++++----- .../extractmethod/StaticMethod.after.py | 8 ++++---- .../extractmethod/TryContext.after.py | 14 +++++++------- .../extractmethod/TryFinally.after.py | 10 +++++----- .../extractmethod/WhileOutput.after.py | 12 ++++++------ .../refactoring/extractmethod/Yield33.after.py | 14 +++++++------- .../extractmethod/YieldFrom33.after.py | 10 +++++----- .../refactoring/PyExtractMethodTest.java | 10 ---------- 41 files changed, 191 insertions(+), 224 deletions(-) delete mode 100644 python/testData/refactoring/extractmethod/Comment.after.py delete mode 100644 python/testData/refactoring/extractmethod/Comment.before.py delete mode 100644 python/testData/refactoring/extractmethod/SeveralCommentsAbove.after.py delete mode 100644 python/testData/refactoring/extractmethod/SeveralCommentsAbove.before.py diff --git a/python/src/com/jetbrains/python/refactoring/extractmethod/PyExtractMethodUtil.java b/python/src/com/jetbrains/python/refactoring/extractmethod/PyExtractMethodUtil.java index 03adfe1b046c..a91efa182050 100644 --- a/python/src/com/jetbrains/python/refactoring/extractmethod/PyExtractMethodUtil.java +++ b/python/src/com/jetbrains/python/refactoring/extractmethod/PyExtractMethodUtil.java @@ -467,17 +467,18 @@ public class PyExtractMethodUtil { } final PsiNamedElement parent = PsiTreeUtil.getParentOfType(anchor, PyFile.class, PyClass.class, PyFunction.class); - final PsiElement insertionAnchor; - if (parent instanceof PyFile || parent instanceof PyClass) { - final PsiElement target = parent instanceof PyClass ? ((PyClass)parent).getStatementList() : parent; - insertionAnchor = PyPsiUtils.getParentRightBefore(anchor, target); + final PsiElement result; + // The only safe case to insert extracted function *after* original scope owner is function. + if (parent instanceof PyFunction) { + result = parent.getParent().addAfter(generatedMethod, parent); } else { - insertionAnchor = parent; + final PsiElement target = parent instanceof PyClass ? ((PyClass)parent).getStatementList() : parent; + final PsiElement insertionAnchor = PyPsiUtils.getParentRightBefore(anchor, target); + assert insertionAnchor != null; + final Couple comments = PyPsiUtils.getPrecedingComments(insertionAnchor); + result = insertionAnchor.getParent().addBefore(generatedMethod, comments != null ? comments.getFirst() : insertionAnchor); } - assert insertionAnchor != null; - final Couple comments = PyPsiUtils.getPrecedingComments(insertionAnchor); - final PsiElement result = insertionAnchor.getParent().addBefore(generatedMethod, comments != null ? comments.getFirst() : insertionAnchor); // to ensure correct reformatting, mark the entire method as generated result.accept(new PsiRecursiveElementVisitor() { @Override diff --git a/python/testData/refactoring/extractmethod/BreakAst.after.py b/python/testData/refactoring/extractmethod/BreakAst.after.py index bf980f363971..69865e22a65c 100644 --- a/python/testData/refactoring/extractmethod/BreakAst.after.py +++ b/python/testData/refactoring/extractmethod/BreakAst.after.py @@ -1,6 +1,6 @@ -def bar(r_new): - return PI * r_new ** 2 - - def cylinder_volume(r, h): h * bar(r) + + +def bar(r_new): + return PI * r_new ** 2 diff --git a/python/testData/refactoring/extractmethod/ClassMethod.after.py b/python/testData/refactoring/extractmethod/ClassMethod.after.py index 52040554331e..a9c42d74742e 100644 --- a/python/testData/refactoring/extractmethod/ClassMethod.after.py +++ b/python/testData/refactoring/extractmethod/ClassMethod.after.py @@ -1,8 +1,8 @@ class C: - @classmethod - def baz(cls): - print('foo', cls) - @classmethod def foo(cls): cls.baz() + + @classmethod + def baz(cls): + print('foo', cls) diff --git a/python/testData/refactoring/extractmethod/ClassWithoutInit.after.py b/python/testData/refactoring/extractmethod/ClassWithoutInit.after.py index 95009f8d323e..f169aef63d38 100644 --- a/python/testData/refactoring/extractmethod/ClassWithoutInit.after.py +++ b/python/testData/refactoring/extractmethod/ClassWithoutInit.after.py @@ -1,11 +1,11 @@ +def foo(): + c = bar() + return c + + def bar(): class C(object): pass c = C() - return c - - -def foo(): - c = bar() return c \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/Comment.after.py b/python/testData/refactoring/extractmethod/Comment.after.py deleted file mode 100644 index da23f0ddb62b..000000000000 --- a/python/testData/refactoring/extractmethod/Comment.after.py +++ /dev/null @@ -1,7 +0,0 @@ -def bar(): - print("Hello") - - -#Comment to method -def foo(): - bar() diff --git a/python/testData/refactoring/extractmethod/Comment.before.py b/python/testData/refactoring/extractmethod/Comment.before.py deleted file mode 100644 index e901294f593c..000000000000 --- a/python/testData/refactoring/extractmethod/Comment.before.py +++ /dev/null @@ -1,3 +0,0 @@ -#Comment to method -def foo(): - print("Hello") diff --git a/python/testData/refactoring/extractmethod/CommentAfterSelection.after.py b/python/testData/refactoring/extractmethod/CommentAfterSelection.after.py index 76b9b3076201..4647e29be6cc 100644 --- a/python/testData/refactoring/extractmethod/CommentAfterSelection.after.py +++ b/python/testData/refactoring/extractmethod/CommentAfterSelection.after.py @@ -1,10 +1,10 @@ -def bar(c_new): - if c_new: - print(1) - - def foo(c): x = 1 bar(c) # Comment - return x \ No newline at end of file + return x + + +def bar(c_new): + if c_new: + print(1) \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/DefinedBeforeAccessedAfter.after.py b/python/testData/refactoring/extractmethod/DefinedBeforeAccessedAfter.after.py index ab8f3a43bd85..e2a8eb28bf4a 100644 --- a/python/testData/refactoring/extractmethod/DefinedBeforeAccessedAfter.after.py +++ b/python/testData/refactoring/extractmethod/DefinedBeforeAccessedAfter.after.py @@ -1,9 +1,9 @@ -def bar(): - if 11 > 4: - print('ok') - - def main(indices): foo = True bar() return foo + + +def bar(): + if 11 > 4: + print('ok') diff --git a/python/testData/refactoring/extractmethod/DuplicateCheckParam.after.py b/python/testData/refactoring/extractmethod/DuplicateCheckParam.after.py index c4f329969215..69b89f6127b6 100644 --- a/python/testData/refactoring/extractmethod/DuplicateCheckParam.after.py +++ b/python/testData/refactoring/extractmethod/DuplicateCheckParam.after.py @@ -1,11 +1,11 @@ -def foo(a_new): - b1 = do_smth_with(a_new) - return b1 - - def f(): a = do_smth() b1 = foo(a) a = do_smth() b = foo(a + 1) do_smth_with(b1, b) + + +def foo(a_new): + b1 = do_smth_with(a_new) + return b1 diff --git a/python/testData/refactoring/extractmethod/DuplicateInClass.after.py b/python/testData/refactoring/extractmethod/DuplicateInClass.after.py index c3a348fbfc4f..672e301ccc7f 100644 --- a/python/testData/refactoring/extractmethod/DuplicateInClass.after.py +++ b/python/testData/refactoring/extractmethod/DuplicateInClass.after.py @@ -1,11 +1,11 @@ class A: - def foo(self): - print 1 - def baz(self): self.foo() self.foo() + def foo(self): + print 1 + def bar(self): self.foo() \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/DuplicateMultiLine.after.py b/python/testData/refactoring/extractmethod/DuplicateMultiLine.after.py index 09ecace3e138..bdc482a91a36 100644 --- a/python/testData/refactoring/extractmethod/DuplicateMultiLine.after.py +++ b/python/testData/refactoring/extractmethod/DuplicateMultiLine.after.py @@ -1,8 +1,8 @@ -def foo(): - a = 1 - print a - - def bar(): foo() foo() + + +def foo(): + a = 1 + print a diff --git a/python/testData/refactoring/extractmethod/DuplicateSingleLine.after.py b/python/testData/refactoring/extractmethod/DuplicateSingleLine.after.py index 5fb885b56fa9..c9afd784b8a5 100644 --- a/python/testData/refactoring/extractmethod/DuplicateSingleLine.after.py +++ b/python/testData/refactoring/extractmethod/DuplicateSingleLine.after.py @@ -1,10 +1,10 @@ -def foo(): - a = 1 - return a - - def bar(): a = foo() print a a = foo() print a + + +def foo(): + a = 1 + return a diff --git a/python/testData/refactoring/extractmethod/DuplicateWithRename.after.py b/python/testData/refactoring/extractmethod/DuplicateWithRename.after.py index 8634ab18bd53..64be9e15f089 100644 --- a/python/testData/refactoring/extractmethod/DuplicateWithRename.after.py +++ b/python/testData/refactoring/extractmethod/DuplicateWithRename.after.py @@ -1,10 +1,10 @@ -def foo(a_new): - print a_new - - def bar(): a = 1 b = 2 foo(a) foo(b) + + +def foo(a_new): + print a_new diff --git a/python/testData/refactoring/extractmethod/ElseBody.after.py b/python/testData/refactoring/extractmethod/ElseBody.after.py index 24e387dd3633..95ac2d79a1e0 100644 --- a/python/testData/refactoring/extractmethod/ElseBody.after.py +++ b/python/testData/refactoring/extractmethod/ElseBody.after.py @@ -1,8 +1,3 @@ -def baz(f_new): - length = len(f_new.readlines()) # <---extract something from here - print("hi from else") - - def foo(): for arg in sys.argv[1:]: try: @@ -11,4 +6,9 @@ def foo(): print('cannot open', arg) else: baz(f) - #anything else you need \ No newline at end of file + #anything else you need + + +def baz(f_new): + length = len(f_new.readlines()) # <---extract something from here + print("hi from else") \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/Expression.after.py b/python/testData/refactoring/extractmethod/Expression.after.py index 5ef6f9653efb..37349ae25111 100644 --- a/python/testData/refactoring/extractmethod/Expression.after.py +++ b/python/testData/refactoring/extractmethod/Expression.after.py @@ -1,8 +1,8 @@ -def plus(a_new, b_new): - return a_new + b_new * 123 - - def f(): a = 1 b = 1 - c = plus(a, b) \ No newline at end of file + c = plus(a, b) + + +def plus(a_new, b_new): + return a_new + b_new * 123 \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/File.after.py b/python/testData/refactoring/extractmethod/File.after.py index 78b1fee7d3c0..430a8ad3d65e 100644 --- a/python/testData/refactoring/extractmethod/File.after.py +++ b/python/testData/refactoring/extractmethod/File.after.py @@ -1,10 +1,10 @@ +def __init__(self): + for base in self__class__.__bases__: + bar(base, self) + + def bar(base_new, self_new): try: base_new.__init__(self_new) except AttributeError: pass - - -def __init__(self): - for base in self__class__.__bases__: - bar(base, self) diff --git a/python/testData/refactoring/extractmethod/GlobalVarAssignment.after.py b/python/testData/refactoring/extractmethod/GlobalVarAssignment.after.py index 0ca17889e414..ba07375930e6 100644 --- a/python/testData/refactoring/extractmethod/GlobalVarAssignment.after.py +++ b/python/testData/refactoring/extractmethod/GlobalVarAssignment.after.py @@ -1,11 +1,10 @@ x = 0 +def foo(): + global x + bar() + def bar(): global x - x = 1 - - -def foo(): - global x - bar() \ No newline at end of file + x = 1 \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/LocalFunction.after.py b/python/testData/refactoring/extractmethod/LocalFunction.after.py index a37664baf8e4..961f520b2446 100644 --- a/python/testData/refactoring/extractmethod/LocalFunction.after.py +++ b/python/testData/refactoring/extractmethod/LocalFunction.after.py @@ -1,9 +1,9 @@ -def bar(f_new): - return f_new(1) - - def foo(): def f(x): return x - return bar(f) \ No newline at end of file + return bar(f) + + +def bar(f_new): + return f_new(1) \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/LocalVarDefinedBeforeModifiedInside.after.py b/python/testData/refactoring/extractmethod/LocalVarDefinedBeforeModifiedInside.after.py index 94592e336af8..f1c013110597 100644 --- a/python/testData/refactoring/extractmethod/LocalVarDefinedBeforeModifiedInside.after.py +++ b/python/testData/refactoring/extractmethod/LocalVarDefinedBeforeModifiedInside.after.py @@ -1,15 +1,15 @@ -def bar(foo_new, i_new): - need_break = False - if i_new > 2: - foo_new = False - need_break = True - return foo_new, need_break - - def main(indices): foo = True for i in indices: foo, need_break = bar(foo, i) if need_break: break - return foo \ No newline at end of file + return foo + + +def bar(foo_new, i_new): + need_break = False + if i_new > 2: + foo_new = False + need_break = True + return foo_new, need_break \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/MethodContext.after.py b/python/testData/refactoring/extractmethod/MethodContext.after.py index 894730b4a9e4..82664c7e209a 100644 --- a/python/testData/refactoring/extractmethod/MethodContext.after.py +++ b/python/testData/refactoring/extractmethod/MethodContext.after.py @@ -1,7 +1,7 @@ class C: + def foo(self): + self.bar() + def bar(self): for x in [1, 2]: - print x - - def foo(self): - self.bar() \ No newline at end of file + print x \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/MethodInIf.after.py b/python/testData/refactoring/extractmethod/MethodInIf.after.py index 56a5e579abfa..bb5e31f7bcb5 100644 --- a/python/testData/refactoring/extractmethod/MethodInIf.after.py +++ b/python/testData/refactoring/extractmethod/MethodInIf.after.py @@ -1,10 +1,10 @@ class C: - def baz(self, arg_new): - self.bar(arg_new) - def foo(self, option, arg): if option: self.baz(arg) + def baz(self, arg_new): + self.bar(arg_new) + def bar(self, arg): pass \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/MethodIndent.after.py b/python/testData/refactoring/extractmethod/MethodIndent.after.py index 068c5c3d3e58..8c567b9db6e9 100644 --- a/python/testData/refactoring/extractmethod/MethodIndent.after.py +++ b/python/testData/refactoring/extractmethod/MethodIndent.after.py @@ -1,10 +1,10 @@ class Foo(X, Y, Z): + def __init__(self): + for base in self__class__.__bases__: + self.bar(base) + def bar(self, base_new): try: base_new.__init__(self) except AttributeError: pass - - def __init__(self): - for base in self__class__.__bases__: - self.bar(base) diff --git a/python/testData/refactoring/extractmethod/MethodReturn.after.py b/python/testData/refactoring/extractmethod/MethodReturn.after.py index c284021950fd..66bba088b794 100644 --- a/python/testData/refactoring/extractmethod/MethodReturn.after.py +++ b/python/testData/refactoring/extractmethod/MethodReturn.after.py @@ -1,9 +1,9 @@ class C: + def foo(self): + return self.bar() + def bar(self): if (self.cond): return 1 else: - return 2 - - def foo(self): - return self.bar() \ No newline at end of file + return 2 \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/Nonlocal.after.py b/python/testData/refactoring/extractmethod/Nonlocal.after.py index 6d3f506118d5..50118d328650 100644 --- a/python/testData/refactoring/extractmethod/Nonlocal.after.py +++ b/python/testData/refactoring/extractmethod/Nonlocal.after.py @@ -1,13 +1,13 @@ def foo(): x = 1 + def bar(): + nonlocal x + baz() + print(x) def baz(): nonlocal x x = 2 - def bar(): - nonlocal x - baz() - print(x) bar() foo() \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/OutNotEmptyStatements.after.py b/python/testData/refactoring/extractmethod/OutNotEmptyStatements.after.py index e76646160990..ad7537c225bd 100644 --- a/python/testData/refactoring/extractmethod/OutNotEmptyStatements.after.py +++ b/python/testData/refactoring/extractmethod/OutNotEmptyStatements.after.py @@ -1,12 +1,12 @@ -def sum_squares(a_new, result_new): - while a_new < 10: - result_new += a_new * a_new - a_new += 1 - return result_new - - def f(): a = 10 result = 0 result = sum_squares(a, result) print("Sum of squares: " + result) + + +def sum_squares(a_new, result_new): + while a_new < 10: + result_new += a_new * a_new + a_new += 1 + return result_new diff --git a/python/testData/refactoring/extractmethod/OutNotEmptyStatements2.after.py b/python/testData/refactoring/extractmethod/OutNotEmptyStatements2.after.py index 31e3e2fde502..e0bad462716a 100644 --- a/python/testData/refactoring/extractmethod/OutNotEmptyStatements2.after.py +++ b/python/testData/refactoring/extractmethod/OutNotEmptyStatements2.after.py @@ -1,12 +1,12 @@ +def f(): + a = 1 + a, result = sum_squares(a) + print("Sum of squares: " + a + " = " + result) + + def sum_squares(a_new): result = 0 while a_new < 10: result += a_new * a_new a_new += 1 return a_new, result - - -def f(): - a = 1 - a, result = sum_squares(a) - print("Sum of squares: " + a + " = " + result) diff --git a/python/testData/refactoring/extractmethod/Parameter.after.py b/python/testData/refactoring/extractmethod/Parameter.after.py index d8a11e00ef99..1929a97fa175 100644 --- a/python/testData/refactoring/extractmethod/Parameter.after.py +++ b/python/testData/refactoring/extractmethod/Parameter.after.py @@ -1,6 +1,6 @@ -def bar(a_new): - print(a_new) - - def foo(a): bar(a) + + +def bar(a_new): + print(a_new) diff --git a/python/testData/refactoring/extractmethod/Py479.after.py b/python/testData/refactoring/extractmethod/Py479.after.py index 6de82ec0c85a..38c10eaa2aa9 100644 --- a/python/testData/refactoring/extractmethod/Py479.after.py +++ b/python/testData/refactoring/extractmethod/Py479.after.py @@ -2,14 +2,6 @@ class Foo: def __init__(self): self.tmp = False - def bar(self, condition3_new, condition4_new): - self.tmp2 = True - if condition3_new: - print(condition3_new) - if condition4_new: - print(condition4_new) - print("misterious extract method test") - def extract_method(self, condition1, condition2, condition3, condition4): list = (1, 2, 3) a = 6 @@ -21,5 +13,15 @@ class Foo: print(b) else: self.bar(condition3, condition4) + + def bar(self, condition3_new, condition4_new): + self.tmp2 = True + if condition3_new: + print(condition3_new) + if condition4_new: + print(condition4_new) + print("misterious extract method test") + + f = Foo() f.extract_method(True, True, True, True) \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/ReturnTuple.after.py b/python/testData/refactoring/extractmethod/ReturnTuple.after.py index f4ff8f774e74..eb6ffa1738ce 100644 --- a/python/testData/refactoring/extractmethod/ReturnTuple.after.py +++ b/python/testData/refactoring/extractmethod/ReturnTuple.after.py @@ -1,6 +1,6 @@ -def bar(p_name_new, params_new): - return p_name_new + '(' + ', '.join(params_new) + ')' - - def x(p_name, params): - return bar(p_name, params), None \ No newline at end of file + return bar(p_name, params), None + + +def bar(p_name_new, params_new): + return p_name_new + '(' + ', '.join(params_new) + ')' \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/SeveralCommentsAbove.after.py b/python/testData/refactoring/extractmethod/SeveralCommentsAbove.after.py deleted file mode 100644 index a892e2fb7402..000000000000 --- a/python/testData/refactoring/extractmethod/SeveralCommentsAbove.after.py +++ /dev/null @@ -1,9 +0,0 @@ -# Unrelated comment -def bar(): - print("Hello") - - -# Comment to method -# continuation -def foo(): - bar() \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/SeveralCommentsAbove.before.py b/python/testData/refactoring/extractmethod/SeveralCommentsAbove.before.py deleted file mode 100644 index 7e5c0ad4e43c..000000000000 --- a/python/testData/refactoring/extractmethod/SeveralCommentsAbove.before.py +++ /dev/null @@ -1,6 +0,0 @@ -# Unrelated comment - -# Comment to method -# continuation -def foo(): - print("Hello") \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/SingleRaise.after.py b/python/testData/refactoring/extractmethod/SingleRaise.after.py index 4d5b9f564166..02b40d2be5b2 100644 --- a/python/testData/refactoring/extractmethod/SingleRaise.after.py +++ b/python/testData/refactoring/extractmethod/SingleRaise.after.py @@ -1,10 +1,10 @@ +def foo(x): + bar() + print(1) + + def bar(): try: pass except Exception: - raise - - -def foo(x): - bar() - print(1) \ No newline at end of file + raise \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/Statement.after.py b/python/testData/refactoring/extractmethod/Statement.after.py index b8cd0525969d..36fab153003b 100644 --- a/python/testData/refactoring/extractmethod/Statement.after.py +++ b/python/testData/refactoring/extractmethod/Statement.after.py @@ -1,8 +1,8 @@ -def foo(a_new, b_new): - print(a_new + b_new * 123) - - def f(): a = 1 b = 1 - foo(a, b) \ No newline at end of file + foo(a, b) + + +def foo(a_new, b_new): + print(a_new + b_new * 123) \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/Statements.after.py b/python/testData/refactoring/extractmethod/Statements.after.py index 70aa5c212096..acb612598147 100644 --- a/python/testData/refactoring/extractmethod/Statements.after.py +++ b/python/testData/refactoring/extractmethod/Statements.after.py @@ -1,10 +1,10 @@ -def foo(a_new, b_new): - puts(a_new + b_new * 123) - print("Hello from extract method") - - def f(): a = 1 b = 1 foo(a, b) + +def foo(a_new, b_new): + puts(a_new + b_new * 123) + print("Hello from extract method") + diff --git a/python/testData/refactoring/extractmethod/StaticMethod.after.py b/python/testData/refactoring/extractmethod/StaticMethod.after.py index 86f8c7f19a56..9919e328a7c8 100644 --- a/python/testData/refactoring/extractmethod/StaticMethod.after.py +++ b/python/testData/refactoring/extractmethod/StaticMethod.after.py @@ -1,8 +1,8 @@ class C: @staticmethod - def baz(): - print "hello world" + def foo(): + C.baz() @staticmethod - def foo(): - C.baz() \ No newline at end of file + def baz(): + print "hello world" \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/TryContext.after.py b/python/testData/refactoring/extractmethod/TryContext.after.py index c56c6c4f11cf..666f1dd37496 100644 --- a/python/testData/refactoring/extractmethod/TryContext.after.py +++ b/python/testData/refactoring/extractmethod/TryContext.after.py @@ -1,12 +1,12 @@ +def foo(f): + x = 1 + x = bar(f, x) + return x + + def bar(f_new, x_new): try: x_new = f_new() except Exception: pass - return x_new - - -def foo(f): - x = 1 - x = bar(f, x) - return x \ No newline at end of file + return x_new \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/TryFinally.after.py b/python/testData/refactoring/extractmethod/TryFinally.after.py index d2ee4f543874..45267fb83667 100644 --- a/python/testData/refactoring/extractmethod/TryFinally.after.py +++ b/python/testData/refactoring/extractmethod/TryFinally.after.py @@ -1,10 +1,10 @@ +def foo(x): + bar() + return x + + def bar(): try: print(1) finally: pass - - -def foo(x): - bar() - return x diff --git a/python/testData/refactoring/extractmethod/WhileOutput.after.py b/python/testData/refactoring/extractmethod/WhileOutput.after.py index 502f8d2ee25b..ed83eafe99ef 100644 --- a/python/testData/refactoring/extractmethod/WhileOutput.after.py +++ b/python/testData/refactoring/extractmethod/WhileOutput.after.py @@ -1,11 +1,11 @@ -def bar(a_new): - do_smth - a_new += 1 - return a_new - - def f(): a = 1 while a < 10: a = bar(a) print(a) + + +def bar(a_new): + do_smth + a_new += 1 + return a_new diff --git a/python/testData/refactoring/extractmethod/Yield33.after.py b/python/testData/refactoring/extractmethod/Yield33.after.py index edec94a609ea..682df761bb34 100644 --- a/python/testData/refactoring/extractmethod/Yield33.after.py +++ b/python/testData/refactoring/extractmethod/Yield33.after.py @@ -1,11 +1,11 @@ +def f(xs): + found = False + found = yield from bar(found, xs) + print(found) + + def bar(found_new, xs_new): for x in xs_new: yield x found_new = True - return found_new - - -def f(xs): - found = False - found = yield from bar(found, xs) - print(found) \ No newline at end of file + return found_new \ No newline at end of file diff --git a/python/testData/refactoring/extractmethod/YieldFrom33.after.py b/python/testData/refactoring/extractmethod/YieldFrom33.after.py index 03331b6bf05e..06924e62aab2 100644 --- a/python/testData/refactoring/extractmethod/YieldFrom33.after.py +++ b/python/testData/refactoring/extractmethod/YieldFrom33.after.py @@ -3,10 +3,10 @@ def f(x, y): return x, y -def bar(in1_new, in2_new): - return (yield from f(in1_new, in2_new)) - - def g(in1, in2): out1, out2 = yield from bar(in1, in2) - print(out1, out2) \ No newline at end of file + print(out1, out2) + + +def bar(in1_new, in2_new): + return (yield from f(in1_new, in2_new)) \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/refactoring/PyExtractMethodTest.java b/python/testSrc/com/jetbrains/python/refactoring/PyExtractMethodTest.java index 6228f30cf255..bfa342969b5f 100644 --- a/python/testSrc/com/jetbrains/python/refactoring/PyExtractMethodTest.java +++ b/python/testSrc/com/jetbrains/python/refactoring/PyExtractMethodTest.java @@ -121,16 +121,6 @@ public class PyExtractMethodTest extends LightMarkedTestCase { doTest("sum_squares"); } - // PY-2903 - public void testComment() { - doTest("bar"); - } - - // PY-2903 - public void testSeveralCommentsAbove() { - doTest("bar"); - } - public void testFile() { doTest("bar"); }