Introduce '|' operator for set union.
--
MOS_MIGRATED_REVID=101363350
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTestCase.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTestCase.java
index 7be1c86..b2d661b 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTestCase.java
@@ -128,7 +128,7 @@
setFailFast(true);
try {
eval(input);
- fail();
+ fail("Expected error '" + msg + "' but got no error");
} catch (IllegalArgumentException | EvalException e) {
assertThat(e).hasMessage(msg);
}
@@ -137,7 +137,7 @@
public void checkEvalErrorContains(String msg, String... input) throws Exception {
try {
eval(input);
- fail();
+ fail("Expected error containing '" + msg + "' but got no error");
} catch (IllegalArgumentException | EvalException e) {
assertThat(e.getMessage()).contains(msg);
}
@@ -146,7 +146,7 @@
public void checkEvalErrorStartsWith(String msg, String... input) throws Exception {
try {
eval(input);
- fail();
+ fail("Expected error starting with '" + msg + "' but got no error");
} catch (IllegalArgumentException | EvalException e) {
assertThat(e.getMessage()).startsWith(msg);
}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index e794aa7..22c7153 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -609,6 +609,14 @@
}
@Test
+ public void testUnionSet() throws Exception {
+ new SkylarkTest()
+ .testStatement("str(set([1, 3]) | set([1, 2]))", "set([1, 2, 3])")
+ .testStatement("str(set([1, 2]) | [1, 3])", "set([1, 2, 3])")
+ .testIfExactError("unsupported operand type(s) for |: 'int' and 'int'", "2 | 4");
+ }
+
+ @Test
public void testClassObjectCannotAccessNestedSet() throws Exception {
new SkylarkTest()
.update("mock", new MockClassObject())