diff options
author | Laurent Le Brun <laurentlb@google.com> | 2015-04-14 14:41:59 +0000 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@google.com> | 2015-04-15 16:17:25 +0000 |
commit | 89bdeaac7010257ad2a34f11d0d9de58cb0b2db9 (patch) | |
tree | 1531a80a1b2d502e67a16e555acdb6befc8560dc /src/main/java/com/google/devtools/build/lib/packages | |
parent | 93a2345a4d2c9eebd84c770ac9cef3d0487359fa (diff) |
Simplify MethodLibrary.
Type information for methods is not needed anymore.
--
MOS_MIGRATED_REVID=91088042
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java | 63 |
1 files changed, 18 insertions, 45 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java index 63ada93705..1239ba861f 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/packages/MethodLibrary.java @@ -1090,38 +1090,15 @@ public class MethodLibrary { + "</pre>") public static final class DictModule {} - public static final Map<Function, SkylarkType> stringFunctions = ImmutableMap - .<Function, SkylarkType>builder() - .put(join, SkylarkType.STRING) - .put(lower, SkylarkType.STRING) - .put(upper, SkylarkType.STRING) - .put(replace, SkylarkType.STRING) - .put(split, SkylarkType.of(List.class, String.class)) - .put(rfind, SkylarkType.INT) - .put(find, SkylarkType.INT) - .put(rindex, SkylarkType.INT) - .put(index, SkylarkType.INT) - .put(endswith, SkylarkType.BOOL) - .put(startswith, SkylarkType.BOOL) - .put(strip, SkylarkType.STRING) - .put(slice, SkylarkType.STRING) - .put(count, SkylarkType.INT) - .build(); + public static final List<Function> stringFunctions = ImmutableList.of( + count, endswith, find, index, join, lower, replace, rfind, + rindex, slice, split, startswith, strip, upper); - public static final Map<Function, SkylarkType> listPureFunctions = ImmutableMap - .<Function, SkylarkType>builder() - .put(slice, SkylarkType.LIST) - .build(); + public static final List<Function> listPureFunctions = ImmutableList.of(slice); public static final List<Function> listFunctions = ImmutableList.of(append, extend); - public static final Map<Function, SkylarkType> dictFunctions = ImmutableMap - .<Function, SkylarkType>builder() - .put(items, SkylarkType.of(List.class)) - .put(get, SkylarkType.UNKNOWN) - .put(keys, SkylarkType.of(Set.class)) - .put(values, SkylarkType.of(List.class)) - .build(); + public static final List<Function> dictFunctions = ImmutableList.of(items, get, keys, values); private static final Map<Function, SkylarkType> pureGlobalFunctions = ImmutableMap .<Function, SkylarkType>builder() @@ -1158,11 +1135,11 @@ public class MethodLibrary { */ public static void setupMethodEnvironment(Environment env) { env.registerFunction(Map.class, indexOperator.getName(), indexOperator); - setupMethodEnvironment(env, Map.class, dictFunctions.keySet()); + setupMethodEnvironment(env, Map.class, dictFunctions); env.registerFunction(String.class, indexOperator.getName(), indexOperator); - setupMethodEnvironment(env, String.class, stringFunctions.keySet()); - setupMethodEnvironment(env, List.class, listPureFunctions.keySet()); - setupMethodEnvironment(env, SkylarkList.class, listPureFunctions.keySet()); + setupMethodEnvironment(env, String.class, stringFunctions); + setupMethodEnvironment(env, List.class, listPureFunctions); + setupMethodEnvironment(env, SkylarkList.class, listPureFunctions); if (env.isSkylarkEnabled()) { env.registerFunction(SkylarkList.class, indexOperator.getName(), indexOperator); setupMethodEnvironment(env, skylarkGlobalFunctions.keySet()); @@ -1172,7 +1149,7 @@ public class MethodLibrary { // TODO(bazel-team): listFunctions are not allowed in Skylark extensions (use += instead). // It is allowed in BUILD files only for backward-compatibility. setupMethodEnvironment(env, List.class, listFunctions); - setupMethodEnvironment(env, stringFunctions.keySet()); + setupMethodEnvironment(env, stringFunctions); setupMethodEnvironment(env, pureGlobalFunctions.keySet()); } } @@ -1198,21 +1175,17 @@ public class MethodLibrary { } } + /** + * Collect global functions for the validation environment. + */ public static void setupValidationEnvironment( Map<SkylarkType, Map<String, SkylarkType>> builtIn) { Map<String, SkylarkType> global = builtIn.get(SkylarkType.GLOBAL); - setupValidationEnvironment(skylarkGlobalFunctions, global); - - Map<String, SkylarkType> dict = new HashMap<>(); - setupValidationEnvironment(dictFunctions, dict); - builtIn.put(SkylarkType.of(Map.class), dict); - Map<String, SkylarkType> string = new HashMap<>(); - setupValidationEnvironment(stringFunctions, string); - builtIn.put(SkylarkType.STRING, string); - - Map<String, SkylarkType> list = new HashMap<>(); - setupValidationEnvironment(listPureFunctions, list); - builtIn.put(SkylarkType.LIST, list); + // TODO(bazel-team): To be simplified (we need only the names, not the types). + for (Map.Entry<Function, SkylarkType> function : skylarkGlobalFunctions.entrySet()) { + String name = function.getKey().getName(); + global.put(name, SkylarkFunctionType.of(name, function.getValue())); + } } } |