diff options
author | 2016-01-28 18:36:22 +0000 | |
---|---|---|
committer | 2016-01-29 14:41:09 +0000 | |
commit | c0a8c58b9230a1f5d76269eb7dc6b11e18f19686 (patch) | |
tree | fe0f0c4161987fc24db93d6caa08cfc8228ec8c3 /src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java | |
parent | 84450b8c1a6d9a5cb47032d00aac851741fc94ad (diff) |
Make Skylark dicts mutable
Represent Skylark dict using a new subclass SkylarkDict<K, V> of Map<K, V>.
Back it with a TreeMap to provide a deterministic iteration order.
Also make SkylarkList generic in its element type <E>.
Have Artifact implement Comparable<Object> so it can be used as TreeMap key.
--
MOS_MIGRATED_REVID=113277489
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java index 4c6eb6ac63..c44e5c918b 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java @@ -284,7 +284,7 @@ public class ValidationTest extends EvaluationTestCase { @Test public void testParentWithSkylarkModule() throws Exception { - Class<?> emptyTupleClass = Tuple.EMPTY.getClass(); + Class<?> emptyTupleClass = Tuple.empty().getClass(); Class<?> tupleClass = Tuple.of(1, "a", "b").getClass(); Class<?> mutableListClass = new MutableList(Tuple.of(1, 2, 3), env).getClass(); @@ -311,7 +311,7 @@ public class ValidationTest extends EvaluationTestCase { @Test public void testSkylarkTypeEquivalence() throws Exception { // All subclasses of SkylarkList are made equivalent - Class<?> emptyTupleClass = Tuple.EMPTY.getClass(); + Class<?> emptyTupleClass = Tuple.empty().getClass(); Class<?> tupleClass = Tuple.of(1, "a", "b").getClass(); Class<?> mutableListClass = new MutableList(Tuple.of(1, 2, 3), env).getClass(); @@ -322,8 +322,14 @@ public class ValidationTest extends EvaluationTestCase { // Also for ClassObject assertThat(SkylarkType.of(ClassObject.SkylarkClassObject.class)).isEqualTo(SkylarkType.STRUCT); - // TODO(bazel-team): fix that? - assertThat(SkylarkType.of(ClassObject.class)).isNotEqualTo(SkylarkType.STRUCT); + try { + SkylarkType.of(ClassObject.class); + throw new Exception("foo"); + } catch (Exception e) { + assertThat(e.getMessage()).contains( + "interface com.google.devtools.build.lib.syntax.ClassObject " + + "is not allowed as a Skylark value"); + } // 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? @@ -342,17 +348,17 @@ public class ValidationTest extends EvaluationTestCase { assertThat(SkylarkType.LIST.includes(combo1)).isTrue(); SkylarkType union1 = - SkylarkType.Union.of(SkylarkType.MAP, SkylarkType.LIST, SkylarkType.STRUCT); - assertThat(union1.includes(SkylarkType.MAP)).isTrue(); + SkylarkType.Union.of(SkylarkType.DICT, SkylarkType.LIST, SkylarkType.STRUCT); + assertThat(union1.includes(SkylarkType.DICT)).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.LIST, SkylarkType.DICT, SkylarkType.STRING, SkylarkType.INT); SkylarkType inter1 = SkylarkType.intersection(union1, union2); - assertThat(inter1.includes(SkylarkType.MAP)).isTrue(); + assertThat(inter1.includes(SkylarkType.DICT)).isTrue(); assertThat(inter1.includes(SkylarkType.LIST)).isTrue(); assertThat(inter1.includes(combo1)).isTrue(); assertThat(inter1.includes(SkylarkType.INT)).isFalse(); |