Misc Skylark cleanups and small features

--
MOS_MIGRATED_REVID=88224368
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java
index 6085ba5..d235100 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTests.java
@@ -13,10 +13,7 @@
 // limitations under the License.
 package com.google.devtools.build.lib.syntax;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static com.google.common.truth.Truth.assertThat;
 
 import com.google.common.base.Joiner;
 import com.google.devtools.build.lib.actions.Artifact;
@@ -668,71 +665,83 @@
 
   @Test
   public void testParentWithSkylarkModule() throws Exception {
-    assertTrue(SkylarkList.class.isAnnotationPresent(SkylarkModule.class));
-    assertEquals(SkylarkList.class,
-        EvalUtils.getParentWithSkylarkModule(SkylarkList.class));
-    assertEquals(SkylarkList.class,
-        EvalUtils.getParentWithSkylarkModule(SkylarkList.EMPTY_LIST.getClass()));
-    assertEquals(SkylarkList.class,
-        EvalUtils.getParentWithSkylarkModule(
-            SkylarkList.tuple(Arrays.<Object>asList(1, 2, 3)).getClass()));
-    // TODO(bazel-team): fix that!
-    assertFalse(ClassObject.class.isAnnotationPresent(SkylarkModule.class));
-    assertTrue(ClassObject.SkylarkClassObject.class
-        .isAnnotationPresent(SkylarkModule.class));
-    assertEquals(ClassObject.SkylarkClassObject.class,
-        EvalUtils.getParentWithSkylarkModule(ClassObject.SkylarkClassObject.class));
-    assertNull(EvalUtils.getParentWithSkylarkModule(ClassObject.class));
+    Class<?> emptyListClass = SkylarkList.EMPTY_LIST.getClass();
+    Class<?> simpleListClass = SkylarkList.list(Arrays.<Integer>asList(1, 2, 3), SkylarkType.INT)
+        .getClass();
+    Class<?> tupleClass = SkylarkList.tuple(Arrays.<Object>asList(1, "a", "b")).getClass();
+
+    assertThat(SkylarkList.class.isAnnotationPresent(SkylarkModule.class)).isTrue();
+    assertThat(EvalUtils.getParentWithSkylarkModule(SkylarkList.class))
+        .isEqualTo(SkylarkList.class);
+    assertThat(EvalUtils.getParentWithSkylarkModule(emptyListClass)).isEqualTo(SkylarkList.class);
+    assertThat(EvalUtils.getParentWithSkylarkModule(simpleListClass)).isEqualTo(SkylarkList.class);
+    // TODO(bazel-team): make a tuple not a list anymore.
+    assertThat(EvalUtils.getParentWithSkylarkModule(tupleClass)).isEqualTo(SkylarkList.class);
+
+    // TODO(bazel-team): fix that?
+    assertThat(ClassObject.class.isAnnotationPresent(SkylarkModule.class))
+        .isFalse();
+    assertThat(ClassObject.SkylarkClassObject.class.isAnnotationPresent(SkylarkModule.class))
+        .isTrue();
+    assertThat(EvalUtils.getParentWithSkylarkModule(ClassObject.SkylarkClassObject.class)
+        == ClassObject.SkylarkClassObject.class).isTrue();
+    assertThat(EvalUtils.getParentWithSkylarkModule(ClassObject.class))
+        .isNull();
   }
 
   @Test
   public void testSkylarkTypeEquivalence() throws Exception {
     // All subclasses of SkylarkList are made equivalent
-    assertEquals(SkylarkType.LIST, SkylarkType.of(SkylarkList.class));
-    assertEquals(SkylarkType.LIST, SkylarkType.of(SkylarkList.EMPTY_LIST.getClass()));
-    assertEquals(SkylarkType.LIST, SkylarkType.of(
-        SkylarkList.list(Arrays.<Object>asList(1, 2, 3), SkylarkType.INT).getClass()));
+    Class<?> emptyListClass = SkylarkList.EMPTY_LIST.getClass();
+    Class<?> simpleListClass = SkylarkList.list(Arrays.<Integer>asList(1, 2, 3), SkylarkType.INT)
+        .getClass();
+    Class<?> tupleClass = SkylarkList.tuple(Arrays.<Object>asList(1, "a", "b")).getClass();
+
+    assertThat(SkylarkType.of(SkylarkList.class)).isEqualTo(SkylarkType.LIST);
+    assertThat(SkylarkType.of(emptyListClass)).isEqualTo(SkylarkType.LIST);
+    assertThat(SkylarkType.of(simpleListClass)).isEqualTo(SkylarkType.LIST);
     // TODO(bazel-team): make a tuple not a list anymore.
-    assertEquals(SkylarkType.LIST, SkylarkType.of(
-        SkylarkList.tuple(Arrays.<Object>asList(1, "a", "b")).getClass()));
+    assertThat(SkylarkType.of(tupleClass)).isEqualTo(SkylarkType.LIST);
+
 
     // Also for ClassObject
-    assertEquals(SkylarkType.of(ClassObject.SkylarkClassObject.class),
-        SkylarkType.of(ClassObject.SkylarkClassObject.class));
-    assertFalse(SkylarkType.of(ClassObject.class).equals(
-        SkylarkType.of(ClassObject.SkylarkClassObject.class)));
+    assertThat(SkylarkType.of(ClassObject.SkylarkClassObject.class))
+        .isEqualTo(SkylarkType.STRUCT);
+    // TODO(bazel-team): fix that?
+    assertThat(SkylarkType.of(ClassObject.class))
+        .isNotEqualTo(SkylarkType.STRUCT);
 
-    // Also for these bazel classes, to avoid some regression.
+    // Also test for these bazel classes, to avoid some regression.
     // TODO(bazel-team): move to some other place to remove dependency of syntax tests on Artifact?
-    assertEquals(SkylarkType.of(Artifact.class), SkylarkType.of(Artifact.SpecialArtifact.class));
-    assertFalse(SkylarkType.of(RuleConfiguredTarget.class).equals(
-        SkylarkType.STRUCT));
+    assertThat(SkylarkType.of(Artifact.SpecialArtifact.class))
+        .isEqualTo(SkylarkType.of(Artifact.class));
+    assertThat(SkylarkType.of(RuleConfiguredTarget.class))
+        .isNotEqualTo(SkylarkType.STRUCT);
   }
 
   @Test
   public void testSkylarkTypeInclusion() throws Exception {
-    assertTrue(SkylarkType.INT.includes(SkylarkType.BOTTOM));
-    assertFalse(SkylarkType.BOTTOM.includes(SkylarkType.INT));
-    assertTrue(SkylarkType.TOP.includes(SkylarkType.INT));
+    assertThat(SkylarkType.INT.includes(SkylarkType.BOTTOM)).isTrue();
+    assertThat(SkylarkType.BOTTOM.includes(SkylarkType.INT)).isFalse();
+    assertThat(SkylarkType.TOP.includes(SkylarkType.INT)).isTrue();
 
     SkylarkType combo1 = SkylarkType.Combination.of(SkylarkType.LIST, SkylarkType.INT);
-    assertTrue(SkylarkType.LIST.includes(combo1));
+    assertThat(SkylarkType.LIST.includes(combo1)).isTrue();
 
     SkylarkType union1 = SkylarkType.Union.of(
         SkylarkType.MAP, SkylarkType.LIST, SkylarkType.STRUCT);
-    assertTrue(union1.includes(SkylarkType.MAP));
-    assertTrue(union1.includes(SkylarkType.LIST));
-    assertTrue(union1.includes(SkylarkType.STRUCT));
-    assertTrue(union1.includes(combo1));
-    assertFalse(union1.includes(SkylarkType.STRING));
+    assertThat(union1.includes(SkylarkType.MAP)).isTrue();
+    assertThat(union1.includes(SkylarkType.STRUCT)).isTrue();
+    assertThat(union1.includes(combo1)).isTrue();
+    assertThat(union1.includes(SkylarkType.STRING)).isFalse();
 
     SkylarkType union2 = SkylarkType.Union.of(
         SkylarkType.LIST, SkylarkType.MAP, SkylarkType.STRING, SkylarkType.INT);
     SkylarkType inter1 = SkylarkType.intersection(union1, union2);
-    assertTrue(inter1.includes(SkylarkType.MAP));
-    assertTrue(inter1.includes(SkylarkType.LIST));
-    assertTrue(inter1.includes(combo1));
-    assertFalse(inter1.includes(SkylarkType.INT));
+    assertThat(inter1.includes(SkylarkType.MAP)).isTrue();
+    assertThat(inter1.includes(SkylarkType.LIST)).isTrue();
+    assertThat(inter1.includes(combo1)).isTrue();
+    assertThat(inter1.includes(SkylarkType.INT)).isFalse();
   }
 
   private void parse(String... lines) {