aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar laurentlb <laurentlb@google.com>2017-06-16 14:37:43 +0200
committerGravatar Philipp Wollermann <philwo@google.com>2017-06-19 18:22:00 +0200
commitc3a1af61006f081cbbf8007a4a76cf4a7e27a39c (patch)
treefba8b7fdc25a26e08e21ca797311f32e6d1e6ac2 /src/test/java/com/google
parente4564296e810b77169a23edf63f5352effb0a5ce (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.java12
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java4
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