PY-22720 Extract Method does Not Preserve Existing Line Breaks

- keep empty lines between statements
- add test

GitOrigin-RevId: 276000bdce7ffee22ecd2e03d2ec4831dd8f6725
This commit is contained in:
Marcus Mews
2025-08-05 09:18:03 +00:00
committed by intellij-monorepo-bot
parent cc03cdfb94
commit dd5b188728
4 changed files with 25 additions and 3 deletions
@@ -566,9 +566,6 @@ public final class PyExtractMethodUtil {
final PyFunction method = builder.buildFunction();
final PyStatementList statementList = method.getStatementList();
for (PsiElement element : elementsRange) {
if (element instanceof PsiWhiteSpace) {
continue;
}
statementList.add(element);
}
final PsiElement child = statementList.getFirstChild();
@@ -0,0 +1,12 @@
class Foo:
def bar(self):
print('hello')
<caret>self.extracted()
return self
def extracted(self):
print('awesome')
print('world')
@@ -0,0 +1,9 @@
class Foo:
def bar(self):
print('hello')
<selection>
print('awesome')
print('world')
</selection>
return self
@@ -348,4 +348,8 @@ public class PyExtractMethodTest extends LightMarkedTestCase {
public void testTypedStatements() {
doTest("greeting");
}
public void testPreserveWhitespaceBetweenStatements() {
doTest("extracted");
}
}