mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-9657 Make function from method: function call is not updated correctly when imported with qualified reference
This commit is contained in:
@@ -656,12 +656,42 @@ public class PyUtil {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void removeQualifier(PyReferenceExpression element) {
|
||||
public static void removeQualifier(@NotNull final PyReferenceExpression element) {
|
||||
final PyExpression qualifier = element.getQualifier();
|
||||
if (qualifier != null) {
|
||||
final PsiElement dot = qualifier.getNextSibling();
|
||||
if (dot != null) dot.delete();
|
||||
qualifier.delete();
|
||||
if (qualifier == null) return;
|
||||
|
||||
if (qualifier instanceof PyCallExpression) {
|
||||
final StringBuilder newElement = new StringBuilder(element.getLastChild().getText());
|
||||
final PyExpression callee = ((PyCallExpression)qualifier).getCallee();
|
||||
if (callee instanceof PyReferenceExpression) {
|
||||
final PyExpression calleeQualifier = ((PyReferenceExpression)callee).getQualifier();
|
||||
if (calleeQualifier != null)
|
||||
newElement.insert(0, calleeQualifier.getText() + ".");
|
||||
}
|
||||
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(element.getProject());
|
||||
final PyExpression expression = elementGenerator.createExpressionFromText(LanguageLevel.forElement(element), newElement.toString());
|
||||
element.replace(expression);
|
||||
}
|
||||
else {
|
||||
final PsiReference reference = qualifier.getReference();
|
||||
if (reference != null) {
|
||||
final PsiElement resolved = reference.resolve();
|
||||
if (resolved instanceof PyTargetExpression) {
|
||||
final PsiElement parent = resolved.getParent();
|
||||
if (parent instanceof PyAssignmentStatement) {
|
||||
final PyExpression value = ((PyAssignmentStatement)parent).getAssignedValue();
|
||||
if (value instanceof PyCallExpression) {
|
||||
final PyExpression callee = ((PyCallExpression)value).getCallee();
|
||||
if (callee instanceof PyReferenceExpression) {
|
||||
final PyExpression calleeQualifier = ((PyReferenceExpression)callee).getQualifier();
|
||||
if (calleeQualifier != null) {
|
||||
value.replace(calleeQualifier);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user