Fixed NPEs when using built in functions as rule implementations

--
MOS_MIGRATED_REVID=132066368
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
index 533928c..b3a763f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinFunction.java
@@ -122,9 +122,10 @@
   public Object call(Object[] args,
       FuncallExpression ast, Environment env)
       throws EvalException, InterruptedException {
-    Preconditions.checkNotNull(ast);
     Preconditions.checkNotNull(env);
-    Location loc = ast.getLocation();
+
+    // ast is null when called from Java (as there's no Skylark call site).
+    Location loc = ast == null ? Location.BUILTIN : ast.getLocation();
 
     // Add extra arguments, if needed
     if (extraArgs != null) {