From 9b96c0b37da7dfbb6f590c3da65413d921b83eb5 Mon Sep 17 00:00:00 2001 From: laurentlb Date: Mon, 12 Feb 2018 02:53:19 -0800 Subject: Skylark: SlicingExpression: do not create new nodes for optional expressions RELNOTES: None. PiperOrigin-RevId: 185353994 --- .../build/lib/syntax/MethodLibraryTest.java | 2 +- .../devtools/build/lib/syntax/ParserTest.java | 32 ++++++++++++---------- 2 files changed, 19 insertions(+), 15 deletions(-) (limited to 'src/test/java/com/google/devtools/build/lib/syntax') diff --git a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java index 438c153ede..6553a3d88e 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/MethodLibraryTest.java @@ -934,7 +934,7 @@ public class MethodLibraryTest extends EvaluationTestCase { public void testIndexOnFunction() throws Exception { new BothModesTest() .testIfErrorContains("type 'function' has no operator [](int)", "len[1]") - .testIfErrorContains("type 'function' has no operator [:](int, int, int)", "len[1:4]"); + .testIfErrorContains("type 'function' has no operator [:](int, int, NoneType)", "len[1:4]"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java index f3fbe1e63f..50d6d88fe2 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java @@ -305,16 +305,16 @@ public class ParserTest extends EvaluationTestCase { @Test public void testSlice() throws Exception { - evalSlice("'0123'[:]", Runtime.NONE, Runtime.NONE, 1); - evalSlice("'0123'[1:]", 1, Runtime.NONE, 1); - evalSlice("'0123'[:3]", Runtime.NONE, 3, 1); - evalSlice("'0123'[::]", Runtime.NONE, Runtime.NONE, 1); - evalSlice("'0123'[1::]", 1, Runtime.NONE, 1); - evalSlice("'0123'[:3:]", Runtime.NONE, 3, 1); - evalSlice("'0123'[::-1]", Runtime.NONE, Runtime.NONE, -1); - evalSlice("'0123'[1:3:]", 1, 3, 1); - evalSlice("'0123'[1::-1]", 1, Runtime.NONE, -1); - evalSlice("'0123'[:3:-1]", Runtime.NONE, 3, -1); + evalSlice("'0123'[:]", "", "", ""); + evalSlice("'0123'[1:]", 1, "", ""); + evalSlice("'0123'[:3]", "", 3, ""); + evalSlice("'0123'[::]", "", "", ""); + evalSlice("'0123'[1::]", 1, "", ""); + evalSlice("'0123'[:3:]", "", 3, ""); + evalSlice("'0123'[::-1]", "", "", -1); + evalSlice("'0123'[1:3:]", 1, 3, ""); + evalSlice("'0123'[1::-1]", 1, "", -1); + evalSlice("'0123'[:3:-1]", "", 3, -1); evalSlice("'0123'[1:3:-1]", 1, 3, -1); Expression slice = parseExpression("'0123'[1:3:-1]"); @@ -325,9 +325,13 @@ public class ParserTest extends EvaluationTestCase { SliceExpression e = (SliceExpression) parseExpression(statement); // There is no way to evaluate the expression here, so we rely on string comparison. - assertThat(e.getStart().toString()).isEqualTo(expectedArgs[0].toString()); - assertThat(e.getEnd().toString()).isEqualTo(expectedArgs[1].toString()); - assertThat(e.getStep().toString()).isEqualTo(expectedArgs[2].toString()); + String start = e.getStart() == null ? "" : e.getStart().toString(); + String end = e.getEnd() == null ? "" : e.getEnd().toString(); + String step = e.getStep() == null ? "" : e.getStep().toString(); + + assertThat(start).isEqualTo(expectedArgs[0].toString()); + assertThat(end).isEqualTo(expectedArgs[1].toString()); + assertThat(step).isEqualTo(expectedArgs[2].toString()); } @Test @@ -469,7 +473,7 @@ public class ParserTest extends EvaluationTestCase { @Test public void testPrettyPrintFunctions() throws Exception { assertThat(parseFile("x[1:3]").toString()).isEqualTo("[x[1:3]\n]"); - assertThat(parseFile("x[1:3:1]").toString()).isEqualTo("[x[1:3]\n]"); + assertThat(parseFile("x[1:3:1]").toString()).isEqualTo("[x[1:3:1]\n]"); assertThat(parseFile("x[1:3:2]").toString()).isEqualTo("[x[1:3:2]\n]"); assertThat(parseFile("x[1::2]").toString()).isEqualTo("[x[1::2]\n]"); assertThat(parseFile("x[1:]").toString()).isEqualTo("[x[1:]\n]"); -- cgit v1.2.3