mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Operator precedence for '@' (PY-15390)
This commit is contained in:
@@ -453,7 +453,7 @@ public class PyReplaceExpressionUtil implements PyElementTypes {
|
||||
else if (expr instanceof PyBinaryExpression) {
|
||||
final IElementType opType = getOperationType(expr);
|
||||
if (opType == EXP) priority = 3;
|
||||
if (opType == MULT || opType == DIV || opType == PERC || opType == FLOORDIV) priority = 4;
|
||||
if (opType == MULT || opType == AT || opType == DIV || opType == PERC || opType == FLOORDIV) priority = 4;
|
||||
if (opType == PLUS || opType == MINUS) priority = 5;
|
||||
if (opType == LTLT || opType == GTGT) priority = 6;
|
||||
if (opType == AND) priority = 7;
|
||||
|
||||
+57
@@ -0,0 +1,57 @@
|
||||
(y @ z)[::-5]
|
||||
(y @ z)[5]
|
||||
(y @ z)(5)
|
||||
(y @ z).foo
|
||||
|
||||
-(y @ z)
|
||||
+(y @ z)
|
||||
~(y @ z)
|
||||
|
||||
5 ** (y @ z)
|
||||
(y @ z) ** 5
|
||||
|
||||
5 * y @ z
|
||||
y @ z * 5
|
||||
|
||||
5 / (y @ z)
|
||||
y @ z / 5
|
||||
|
||||
5 // (y @ z)
|
||||
y @ z // 5
|
||||
|
||||
5 + y @ z
|
||||
y @ z + 5
|
||||
|
||||
y @ z - 5
|
||||
5 - y @ z
|
||||
|
||||
5 >> y @ z
|
||||
y @ z << 5
|
||||
|
||||
5 & y @ z
|
||||
y @ z & 5
|
||||
|
||||
5 ^ y @ z
|
||||
y @ z ^ 5
|
||||
|
||||
5 | y @ z
|
||||
y @ z | 5
|
||||
|
||||
() in y @ z
|
||||
y @ z in ()
|
||||
|
||||
5 is y @ z
|
||||
y @ z is 5
|
||||
|
||||
5 < y @ z
|
||||
y @ z < 5
|
||||
|
||||
not y @ z
|
||||
|
||||
5 and y @ z
|
||||
y @ z and 5
|
||||
|
||||
5 or y @ z
|
||||
y @ z or 5
|
||||
|
||||
y @ z if y @ z else y @ z
|
||||
@@ -145,6 +145,11 @@ public class PyInlineLocalTest extends PyTestCase {
|
||||
checkOperatorPrecedence("x = 10 if True else 2", "conditional");
|
||||
}
|
||||
|
||||
// PY-15390
|
||||
public void testMatMulPrecedence() throws Exception {
|
||||
checkOperatorPrecedence("x = y @ z", "matrixMultiplication");
|
||||
}
|
||||
|
||||
private void checkOperatorPrecedence(@NotNull final String firstLine, @NotNull String resultPrefix) throws Exception {
|
||||
myFixture.configureByFile("/refactoring/inlinelocal/operatorPrecedence/template.py");
|
||||
WriteCommandAction.runWriteCommandAction(myFixture.getProject(), new Runnable() {
|
||||
|
||||
Reference in New Issue
Block a user