aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2015-08-10 12:01:34 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-08-11 07:50:40 +0000
commitcc0d9954c86a0ba07d4de2bde939d2debf7fea38 (patch)
treee864c8ae87479c7e7dc88307afcf17de59ca667a /src/test/java/com/google
parentbac37ad709f99c1963a805f767dadea08878d43b (diff)
Allow return without expression, AST-equivalent to return None.
-- MOS_MIGRATED_REVID=100268427
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java30
1 files changed, 30 insertions, 0 deletions
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 93e14a8c56..a9f32c090e 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
@@ -967,6 +967,36 @@ public class ParserTest extends EvaluationTestCase {
List<Statement> stmts3 = parseFile("[ i for (i, j, k) in [(1, 2, 3)] ]\n");
assertThat(stmts3).hasSize(1);
}
+
+ @Test
+ public void testReturnNone() throws Exception {
+ List<Statement> defNone = parseFileForSkylark("def foo():", " return None\n");
+ assertThat(defNone).hasSize(1);
+
+ List<Statement> bodyNone = ((FunctionDefStatement) defNone.get(0)).getStatements();
+ assertThat(bodyNone).hasSize(1);
+
+ ReturnStatement returnNone = (ReturnStatement) bodyNone.get(0);
+ assertEquals("None", ((Identifier) returnNone.getReturnExpression()).getName());
+
+ int i = 0;
+ for (String end : new String[]{";", "\n"}) {
+ List<Statement> defNoExpr = parseFileForSkylark("def bar" + i + "():", " return" + end);
+ i++;
+ assertThat(defNoExpr).hasSize(1);
+
+ List<Statement> bodyNoExpr = ((FunctionDefStatement) defNoExpr.get(0)).getStatements();
+ assertThat(bodyNoExpr).hasSize(1);
+
+ ReturnStatement returnNoExpr = (ReturnStatement) bodyNoExpr.get(0);
+ Identifier none = (Identifier) returnNoExpr.getReturnExpression();
+ assertEquals("None", none.getName());
+ assertLocation(
+ returnNoExpr.getLocation().getStartOffset(),
+ returnNoExpr.getLocation().getEndOffset(),
+ none.getLocation());
+ }
+ }
@Test
public void testForLoopBadSyntax() throws Exception {