diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
index 64ce78a..ec05688 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
@@ -602,8 +602,7 @@
       function = (BaseFunction) fieldValue;
       return function.call(
           positionalArgs, ImmutableMap.<String, Object>copyOf(keyWordArgs), call, env);
-    } else if (env.isSkylark()) {
-      // Only allow native Java calls when using Skylark
+    } else {
       // When calling a Java method, the name is not in the Environment,
       // so evaluating 'func' would fail.
       Class<?> objClass;
@@ -627,13 +626,6 @@
                 EvalUtils.getDataTypeNameFromClass(objClass)));
       }
       return callMethod(methodDescriptor, method, obj, positionalArgs.toArray(), location, env);
-    } else {
-      throw new EvalException(
-          location,
-          String.format(
-              "%s is not defined on object of type '%s'",
-              call.functionName(),
-              EvalUtils.getDataTypeName(value)));
     }
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index a603502..50d85a9 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -2089,13 +2089,13 @@
 
   static final List<BaseFunction> buildGlobalFunctions =
       ImmutableList.<BaseFunction>of(
-          bool, dict, enumerate, int_, len, list, minus, range, repr, reversed, select, sorted, str,
-          zip);
+          all, any, bool, dict, enumerate, int_, len, list, max, min, minus, range, repr, reversed,
+          select, set, sorted, str, zip);
 
   static final List<BaseFunction> skylarkGlobalFunctions =
       ImmutableList.<BaseFunction>builder()
           .addAll(buildGlobalFunctions)
-          .add(all, any, dir, fail, getattr, hasattr, max, min, print, set, struct, type)
+          .add(dir, fail, getattr, hasattr, print, struct, type)
           .build();
 
   /**
