diff --git a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java
index 4a54685dc4fa..d5555f5125e8 100644
--- a/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java
+++ b/python/src/com/jetbrains/python/validation/CompatibilityVisitor.java
@@ -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;
}
}
}
diff --git a/python/testData/inspections/PyCompatibilityInspection/doubleStarUnpacking.py b/python/testData/inspections/PyCompatibilityInspection/doubleStarUnpacking.py
new file mode 100644
index 000000000000..854a89e53db4
--- /dev/null
+++ b/python/testData/inspections/PyCompatibilityInspection/doubleStarUnpacking.py
@@ -0,0 +1,2 @@
+xs = {1: 2}
+ys = {**xs, 3: 4}
diff --git a/python/testData/inspections/PyCompatibilityInspection/starExpression.py b/python/testData/inspections/PyCompatibilityInspection/starExpression.py
index 1858b6269208..7e89b2a176e8 100644
--- a/python/testData/inspections/PyCompatibilityInspection/starExpression.py
+++ b/python/testData/inspections/PyCompatibilityInspection/starExpression.py
@@ -1,2 +1,2 @@
-t = (1, *(2, 3))
+t = (1, *(2, 3))
a, *b, c = t
diff --git a/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java
index f1617e8be29c..a331c6de0a2e 100644
--- a/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java
+++ b/python/testSrc/com/jetbrains/python/inspections/PyCompatibilityInspectionTest.java
@@ -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