mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
+8
-7
@@ -23,9 +23,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.Function;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyElementGenerator;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.psi.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@@ -51,9 +49,9 @@ public class CompatibilityPrintCallQuickFix implements LocalQuickFix {
|
||||
}
|
||||
|
||||
private static void replacePrint(PsiElement expression, PyElementGenerator elementGenerator) {
|
||||
StringBuilder stringBuilder = new StringBuilder("print(");
|
||||
|
||||
PyExpression[] target = PsiTreeUtil.getChildrenOfType(expression, PyExpression.class);
|
||||
final StringBuilder stringBuilder = new StringBuilder("print(");
|
||||
final PyFile file = (PyFile)expression.getContainingFile();
|
||||
final PyExpression[] target = PsiTreeUtil.getChildrenOfType(expression, PyExpression.class);
|
||||
if (target != null) {
|
||||
stringBuilder.append(StringUtil.join(target, new Function<PyExpression, String>() {
|
||||
@Override
|
||||
@@ -62,9 +60,12 @@ public class CompatibilityPrintCallQuickFix implements LocalQuickFix {
|
||||
}
|
||||
}, ", "));
|
||||
}
|
||||
|
||||
stringBuilder.append(")");
|
||||
expression.replace(elementGenerator.createFromText(LanguageLevel.forElement(expression), PyExpression.class,
|
||||
stringBuilder.toString()));
|
||||
|
||||
final PyFromImportStatement statement = elementGenerator.createFromText(LanguageLevel.forElement(expression), PyFromImportStatement.class,
|
||||
"from __future__ import print_function");
|
||||
file.addBefore(statement, file.getStatements().get(0));
|
||||
}
|
||||
}
|
||||
|
||||
+11
-7
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiWhiteSpace;
|
||||
import com.jetbrains.python.PyBundle;
|
||||
import com.jetbrains.python.PyNames;
|
||||
import com.jetbrains.python.psi.LanguageLevel;
|
||||
import com.jetbrains.python.psi.PyElementGenerator;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
@@ -46,16 +47,19 @@ public class StatementEffectFunctionCallQuickFix implements LocalQuickFix {
|
||||
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
|
||||
PsiElement expression = descriptor.getPsiElement();
|
||||
if (expression != null && expression.isWritable() && expression instanceof PyReferenceExpression) {
|
||||
PyElementGenerator elementGenerator = PyElementGenerator.getInstance(project);
|
||||
if ("print".equals(expression.getText()))
|
||||
replacePrint(expression, elementGenerator);
|
||||
final String expressionText = expression.getText();
|
||||
if (PyNames.PRINT.equals(expressionText) || PyNames.EXEC.equals(expressionText))
|
||||
replacePrintExec(expression);
|
||||
else
|
||||
expression.replace(elementGenerator.createCallExpression(LanguageLevel.forElement(expression), expression.getText()));
|
||||
expression.replace(PyElementGenerator.getInstance(project).createCallExpression(LanguageLevel.forElement(expression),
|
||||
expressionText));
|
||||
}
|
||||
}
|
||||
|
||||
private static void replacePrint(PsiElement expression, PyElementGenerator elementGenerator) {
|
||||
StringBuilder stringBuilder = new StringBuilder("print (");
|
||||
private static void replacePrintExec(@NotNull final PsiElement expression) {
|
||||
final PyElementGenerator elementGenerator = PyElementGenerator.getInstance(expression.getProject());
|
||||
final String expressionText = expression.getText();
|
||||
final StringBuilder stringBuilder = new StringBuilder(expressionText + " (");
|
||||
|
||||
final PsiElement whiteSpace = expression.getContainingFile().findElementAt(expression.getTextOffset() + expression.getTextLength());
|
||||
PsiElement next = null;
|
||||
@@ -76,7 +80,7 @@ public class StatementEffectFunctionCallQuickFix implements LocalQuickFix {
|
||||
if (next != null) {
|
||||
final String text = next.getText();
|
||||
stringBuilder.append(text);
|
||||
if (text.endsWith(","))
|
||||
if (text.endsWith(",") && PyNames.PRINT.equals(expressionText))
|
||||
stringBuilder.append(" end=' '");
|
||||
next.delete();
|
||||
}
|
||||
|
||||
@@ -1 +1,3 @@
|
||||
from __future__ import print_function
|
||||
|
||||
print("foo")
|
||||
Reference in New Issue
Block a user