aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
diff options
context:
space:
mode:
authorGravatar Francois-Rene Rideau <tunes@google.com>2016-01-28 18:36:22 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-01-29 14:41:09 +0000
commitc0a8c58b9230a1f5d76269eb7dc6b11e18f19686 (patch)
treefe0f0c4161987fc24db93d6caa08cfc8228ec8c3 /src/test/java/com/google/devtools/build/lib/syntax/ValidationTest.java
parent84450b8c1a6d9a5cb47032d00aac851741fc94ad (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.java22
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();