mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Compatibility inspection for dict unpacking in dict literals
This commit is contained in:
@@ -172,28 +172,32 @@ public abstract class CompatibilityVisitor extends PyAnnotator {
|
||||
super.visitPyStarExpression(node);
|
||||
|
||||
if (node.isAssignmentTarget()) {
|
||||
boolean problem = false;
|
||||
for (LanguageLevel level : myVersionsToProcess) {
|
||||
if (level.isOlderThan(LanguageLevel.PYTHON30)) {
|
||||
problem = true;
|
||||
registerProblem(node, "Python versions < 3.0 do not support starred expressions as assignment targets");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (problem) {
|
||||
registerProblem(node, "Python versions < 3.0 do not support starred expressions as assignment targets");
|
||||
}
|
||||
}
|
||||
|
||||
if (node.isUnpacking()) {
|
||||
boolean problem = false;
|
||||
for (LanguageLevel level : myVersionsToProcess) {
|
||||
if (level.isOlderThan(LanguageLevel.PYTHON35)) {
|
||||
problem = true;
|
||||
registerProblem(node, "Python versions < 3.5 do not support starred expressions in tuples, lists, and sets");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (problem) {
|
||||
registerProblem(node, "Python version < 3.5 do not support starred expressions in tuples, lists, and sets");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPyDoubleStarExpression(PyDoubleStarExpression node) {
|
||||
super.visitPyDoubleStarExpression(node);
|
||||
|
||||
for (LanguageLevel level : myVersionsToProcess) {
|
||||
if (level.isOlderThan(LanguageLevel.PYTHON35)) {
|
||||
registerProblem(node, "Python versions < 3.5 do not support starred expressions in dicts");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
xs = {1: 2}
|
||||
ys = {<warning descr="Python versions < 3.5 do not support starred expressions in dicts">**xs</warning>, 3: 4}
|
||||
@@ -1,2 +1,2 @@
|
||||
t = (1, <warning descr="Python version < 3.5 do not support starred expressions in tuples, lists, and sets">*(2, 3)</warning>)
|
||||
t = (1, <warning descr="Python versions < 3.5 do not support starred expressions in tuples, lists, and sets">*(2, 3)</warning>)
|
||||
a, <warning descr="Python versions < 3.0 do not support starred expressions as assignment targets">*b</warning>, c = t
|
||||
|
||||
@@ -159,6 +159,10 @@ public class PyCompatibilityInspectionTest extends PyTestCase {
|
||||
doTest(LanguageLevel.PYTHON35);
|
||||
}
|
||||
|
||||
public void testDoubleStarUnpacking() {
|
||||
doTest(LanguageLevel.PYTHON35);
|
||||
}
|
||||
|
||||
private void doTest(@NotNull LanguageLevel level) {
|
||||
runWithLanguageLevel(level, new Runnable() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user