aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java29
1 files changed, 29 insertions, 0 deletions
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 b5eedb2e90..20a70843f8 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
@@ -120,6 +120,35 @@ public class ParserTest extends EvaluationTestCase {
}
@Test
+ public void testNonAssociativeOperators() throws Exception {
+ setFailFast(false);
+
+ parseExpression("0 < 2 < 4");
+ assertContainsError("Operator '<' is not associative with operator '<'");
+ clearEvents();
+
+ parseExpression("0 == 2 < 4");
+ assertContainsError("Operator '==' is not associative with operator '<'");
+ clearEvents();
+
+ parseExpression("1 in [1, 2] == True");
+ assertContainsError("Operator 'in' is not associative with operator '=='");
+ clearEvents();
+
+ parseExpression("1 >= 2 <= 3");
+ assertContainsError("Operator '>=' is not associative with operator '<='");
+ clearEvents();
+ }
+
+ @Test
+ public void testNonAssociativeOperatorsWithParens() throws Exception {
+ parseExpression("(0 < 2) < 4");
+ parseExpression("(0 == 2) < 4");
+ parseExpression("(1 in [1, 2]) == True");
+ parseExpression("1 >= (2 <= 3)");
+ }
+
+ @Test
public void testUnaryMinusExpr() throws Exception {
FuncallExpression e = (FuncallExpression) parseExpression("-5");
FuncallExpression e2 = (FuncallExpression) parseExpression("- 5");