diff options
author | 2017-06-16 14:37:43 +0200 | |
---|---|---|
committer | 2017-06-19 18:22:00 +0200 | |
commit | c3a1af61006f081cbbf8007a4a76cf4a7e27a39c (patch) | |
tree | fba8b7fdc25a26e08e21ca797311f32e6d1e6ac2 /src/test/java/com/google | |
parent | e4564296e810b77169a23edf63f5352effb0a5ce (diff) |
Require parentheses around tuple in list comprehension filtering.
This affects only the tuple that appears after 'if' inside a list
comprehension. Since a truth value is expected, it's very unlikely to break
existing code. It's technically a breaking change, but it's not worth
introducing a flag for this.
RELNOTES:
Parentheses around the tuple are now mandatory in [a for b in c if 1, 2]
PiperOrigin-RevId: 159218397
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java | 12 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java | 4 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java index bd4f18c8f4..dc2d021bdb 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java @@ -370,7 +370,7 @@ public class EvaluationTest extends EvaluationTestCase { .testExactOrder("['foo/%s.java' % x for x in []]") .testExactOrder("['foo/%s.java' % y for y in ['bar', 'wiz', 'quux']]", "foo/bar.java", "foo/wiz.java", "foo/quux.java") - .testExactOrder("['%s/%s.java' % (z, t) " + "for z in ['foo', 'bar'] " + .testExactOrder("['%s/%s.java' % (z, t) for z in ['foo', 'bar'] " + "for t in ['baz', 'wiz', 'quux']]", "foo/baz.java", "foo/wiz.java", @@ -378,7 +378,7 @@ public class EvaluationTest extends EvaluationTestCase { "bar/baz.java", "bar/wiz.java", "bar/quux.java") - .testExactOrder("['%s/%s.java' % (b, b) " + "for a in ['foo', 'bar'] " + .testExactOrder("['%s/%s.java' % (b, b) for a in ['foo', 'bar'] " + "for b in ['baz', 'wiz', 'quux']]", "baz/baz.java", "wiz/wiz.java", @@ -386,8 +386,8 @@ public class EvaluationTest extends EvaluationTestCase { "baz/baz.java", "wiz/wiz.java", "quux/quux.java") - .testExactOrder("['%s/%s.%s' % (c, d, e) " + "for c in ['foo', 'bar'] " - + "for d in ['baz', 'wiz', 'quux'] " + "for e in ['java', 'cc']]", + .testExactOrder("['%s/%s.%s' % (c, d, e) for c in ['foo', 'bar'] " + + "for d in ['baz', 'wiz', 'quux'] for e in ['java', 'cc']]", "foo/baz.java", "foo/baz.cc", "foo/wiz.java", @@ -399,7 +399,9 @@ public class EvaluationTest extends EvaluationTestCase { "bar/wiz.java", "bar/wiz.cc", "bar/quux.java", - "bar/quux.cc"); + "bar/quux.cc") + .testExactOrder("[i for i in (1, 2)]", 1, 2) + .testExactOrder("[i for i in [2, 3] or [1, 2]]", 2, 3); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java index c28adaab04..b5eedb2e90 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java @@ -689,6 +689,10 @@ public class ParserTest extends EvaluationTestCase { parseExpression("[x for x for y in ['a']]"); assertContainsError("syntax error at 'for'"); clearEvents(); + + parseExpression("[x for x for y in 1, 2]"); + assertContainsError("syntax error at 'for'"); + clearEvents(); } @Test |