mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Fix PY-20752 'Replace with str.format method call' is messed up with tuples
This commit is contained in:
+9
-5
@@ -34,10 +34,7 @@ import com.jetbrains.python.psi.*;
|
||||
import com.jetbrains.python.psi.impl.PyBuiltinCache;
|
||||
import com.jetbrains.python.psi.impl.PyPsiUtils;
|
||||
import com.jetbrains.python.psi.impl.PyStringLiteralExpressionImpl;
|
||||
import com.jetbrains.python.psi.types.PyClassType;
|
||||
import com.jetbrains.python.psi.types.PyType;
|
||||
import com.jetbrains.python.psi.types.PyTypeChecker;
|
||||
import com.jetbrains.python.psi.types.TypeEvalContext;
|
||||
import com.jetbrains.python.psi.types.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -272,7 +269,9 @@ public class ConvertFormatOperatorToMethodIntention extends BaseIntentionAction
|
||||
final String separator = getSeparator(leftExpression);
|
||||
target.append(separator).append(".format");
|
||||
|
||||
if (rhs instanceof PyDictLiteralExpression) target.append("(**").append(paramText).append(")");
|
||||
if (rhs instanceof PyReferenceExpression && rhsType instanceof PyTupleType) {
|
||||
target.append("(*").append(paramText).append(")");
|
||||
}
|
||||
else if (rhs instanceof PyCallExpression) { // potential dict(foo=1) -> format(foo=1)
|
||||
final PyCallExpression callExpression = (PyCallExpression)rhs;
|
||||
final PyExpression callee = callExpression.getCallee();
|
||||
@@ -294,6 +293,11 @@ public class ConvertFormatOperatorToMethodIntention extends BaseIntentionAction
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (rhsType instanceof PyCollectionType) {
|
||||
if ("dict".equals(rhsType.getName())) {
|
||||
target.append("(**").append(paramText).append(")");
|
||||
}
|
||||
}
|
||||
else target.append("(").append(paramText).append(")"); // tuple is ok as is
|
||||
// Correctly handle multiline implicitly concatenated string literals (PY-9176)
|
||||
target.insert(0, '(').append(')');
|
||||
|
||||
Reference in New Issue
Block a user