Refactor: Parse return statements without an expression properly
This is an internal refactoring necessary for the Skylark linter.
It does not change any behavior.
RELNOTES: None
PiperOrigin-RevId: 166199367
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
index 6dae713..0740416 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/UserDefinedFunction.java
@@ -80,7 +80,11 @@
if (stmt instanceof ReturnStatement) {
// Performance optimization.
// Executing the statement would throw an exception, which is slow.
- return ((ReturnStatement) stmt).getReturnExpression().eval(env);
+ Expression returnExpr = ((ReturnStatement) stmt).getReturnExpression();
+ if (returnExpr == null) {
+ return Runtime.NONE;
+ }
+ return returnExpr.eval(env);
} else {
stmt.exec(env);
}