mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
another case of meaningless introduce (PY-4456)
This commit is contained in:
@@ -75,10 +75,10 @@ public class PyRefactoringUtil {
|
||||
// Check if selection breaks AST node in binary expression
|
||||
if (parent instanceof PyBinaryExpression) {
|
||||
final String selection = file.getText().substring(element1.getTextOffset(), element2.getTextOffset() + element2.getTextLength());
|
||||
final PyExpression expression =
|
||||
PyElementGenerator.getInstance(project).createFromText(LanguageLevel.getDefault(), PyAssignmentStatement.class, "z=" + selection)
|
||||
.getAssignedValue();
|
||||
if (PsiUtilBase.hasErrorElementChild(expression)) {
|
||||
final PyElementGenerator generator = PyElementGenerator.getInstance(project);
|
||||
final LanguageLevel langLevel = LanguageLevel.forElement(element1);
|
||||
final PyExpression expression = generator.createFromText(langLevel, PyAssignmentStatement.class, "z=" + selection).getAssignedValue();
|
||||
if (PsiUtilBase.hasErrorElementChild(expression) || !(expression instanceof PyBinaryExpression)) {
|
||||
return null;
|
||||
}
|
||||
final String parentText = parent.getText();
|
||||
@@ -91,13 +91,11 @@ public class PyRefactoringUtil {
|
||||
final String prefix = parentText.substring(0, startOffset);
|
||||
final String suffix = parentText.substring(endOffset, parentText.length());
|
||||
final TextRange textRange = TextRange.from(startOffset, endOffset - startOffset);
|
||||
final PsiElement fakeExpression =
|
||||
PyElementGenerator.getInstance(project).createFromText(LanguageLevel.getDefault(), parent.getClass(), prefix + "python" + suffix);
|
||||
final PsiElement fakeExpression = generator.createFromText(langLevel, parent.getClass(), prefix + "python" + suffix);
|
||||
if (PsiUtilBase.hasErrorElementChild(fakeExpression)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
assert expression != null;
|
||||
expression.putUserData(PyPsiUtils.SELECTION_BREAKS_AST_NODE, Pair.create(parent, textRange));
|
||||
return expression;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
a = b <selection>+ func()</selection>
|
||||
@@ -45,6 +45,14 @@ public class PyIntroduceVariableTest extends PyIntroduceTestCase {
|
||||
}
|
||||
|
||||
public void testIncorrectSelection() { // PY-4455
|
||||
doTestCannotPerform();
|
||||
}
|
||||
|
||||
public void testOneSidedSelection() { // PY-4456
|
||||
doTestCannotPerform();
|
||||
}
|
||||
|
||||
private void doTestCannotPerform() {
|
||||
boolean thrownExpectedException = false;
|
||||
try {
|
||||
doTest();
|
||||
|
||||
Reference in New Issue
Block a user