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())