diff options
author | Francois-Rene Rideau <tunes@google.com> | 2015-03-02 08:14:46 +0000 |
---|---|---|
committer | Ulf Adams <ulfjack@google.com> | 2015-03-05 14:16:04 +0000 |
commit | f249d761abfa5e8892d12860a0f90e2c2d0aa32b (patch) | |
tree | 02e0285bc51e4ebd73059cd0dfddd160668a4652 /src/test/java/com | |
parent | 2e85a96ff7c0ffbaa1899dd25ff20fa311ddb6cf (diff) |
Fix race condition in SkylarkType.of
Fix race condition in SkylarkType.of(), whereby .equals() but not same (==) types were created, by making Simple.of() synchronized.
Also make SkylarkType#includes() more robust by using .equals() instead of == (it's a little bit slower in the case of Simple types once fixed, but also works on complex types that don't hash-cons their values).
Also, distinguish SkylarkList (printed as list) and java.util.List (printed as List) and similarly for tuple vs Tuple, when printing types in debugging messages.
--
MOS_MIGRATED_REVID=87490176
Diffstat (limited to 'src/test/java/com')
3 files changed, 6 insertions, 6 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java b/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java index e32005065c..3d463f3018 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/BuildFileASTTest.java @@ -97,7 +97,7 @@ public class BuildFileASTTest { assertFalse(buildfile.exec(env, reporter)); Event e = JunitTestUtils.assertContainsEvent(collector, - "unsupported operand type(s) for +: 'int' and 'list'"); + "unsupported operand type(s) for +: 'int' and 'List'"); assertEquals(4, e.getLocation().getStartLineAndColumn().getLine()); } diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java index 7aad74fba9..9da4ed2f81 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/EvalUtilsTest.java @@ -61,8 +61,8 @@ public class EvalUtilsTest { public void testDataTypeNames() throws Exception { assertEquals("string", EvalUtils.getDataTypeName("foo")); assertEquals("int", EvalUtils.getDataTypeName(3)); - assertEquals("tuple", EvalUtils.getDataTypeName(makeTuple(1, 2, 3))); - assertEquals("list", EvalUtils.getDataTypeName(makeList(1, 2, 3))); + assertEquals("Tuple", EvalUtils.getDataTypeName(makeTuple(1, 2, 3))); + assertEquals("List", EvalUtils.getDataTypeName(makeList(1, 2, 3))); assertEquals("dict", EvalUtils.getDataTypeName(makeDict())); assertEquals("FilesetEntry", EvalUtils.getDataTypeName(makeFilesetEntry())); assertEquals("None", EvalUtils.getDataTypeName(Environment.NONE)); diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java index f33b500c32..c31b17b161 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java @@ -302,7 +302,7 @@ public class EvaluationTest extends AbstractEvaluationTestCase { assertTrue(EvalUtils.isImmutable(x)); checkEvalError("(1,2) + [3,4]", // list + tuple - "can only concatenate list (not \"tuple\") to list"); + "can only concatenate List (not \"Tuple\") to List"); } @SuppressWarnings("unchecked") @@ -380,8 +380,8 @@ public class EvaluationTest extends AbstractEvaluationTestCase { public void testListConcatenation() throws Exception { assertEquals(Arrays.asList(1, 2, 3, 4), eval("[1, 2] + [3, 4]", env)); assertEquals(ImmutableList.of(1, 2, 3, 4), eval("(1, 2) + (3, 4)", env)); - checkEvalError("[1, 2] + (3, 4)", "can only concatenate tuple (not \"list\") to tuple"); - checkEvalError("(1, 2) + [3, 4]", "can only concatenate list (not \"tuple\") to list"); + checkEvalError("[1, 2] + (3, 4)", "can only concatenate Tuple (not \"List\") to Tuple"); + checkEvalError("(1, 2) + [3, 4]", "can only concatenate List (not \"Tuple\") to List"); } @Test |