bazel skydoc: consolidate the fake environment This change merges the two essentially identical functions that populate the "fake" predeclared .bzl environment used by skydoc and docgen. The function is in FakeApi. Also: - consolidate all the fake API into a single build target. (So much fuss for so little actual code.) - delete TopLevelBootstrap, which is obfuscating fluff. PiperOrigin-RevId: 332503771
diff --git a/src/main/java/com/google/devtools/build/docgen/BUILD b/src/main/java/com/google/devtools/build/docgen/BUILD index c1d9b15..241a920 100644 --- a/src/main/java/com/google/devtools/build/docgen/BUILD +++ b/src/main/java/com/google/devtools/build/docgen/BUILD
@@ -18,32 +18,10 @@ "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/pkgcache", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test", "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/build/lib/util:classpath", "//src/main/java/com/google/devtools/build/lib/util:filetype", "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test", "//src/main/java/com/google/devtools/common/options", "//src/main/java/net/starlark/java/annot", "//src/main/java/net/starlark/java/eval", @@ -91,15 +69,6 @@ srcs = glob(["**"]) + [ "//src/main/java/com/google/devtools/build/docgen/annot:srcs", "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test:srcs", "//src/main/java/com/google/devtools/build/skydoc/rendering:srcs", ], )
diff --git a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java index 101c040..8bbc50c 100644 --- a/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java +++ b/src/main/java/com/google/devtools/build/docgen/SymbolFamilies.java
@@ -18,78 +18,8 @@ import com.google.common.collect.Lists; import com.google.devtools.build.docgen.starlark.StarlarkBuiltinDoc; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; -import com.google.devtools.build.lib.starlarkbuildapi.TopLevelBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.config.ConfigBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.java.JavaBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.platform.PlatformBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.python.PyBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.stubs.ProviderStub; -import com.google.devtools.build.lib.starlarkbuildapi.stubs.StarlarkAspectStub; -import com.google.devtools.build.lib.starlarkbuildapi.test.TestingBootstrap; import com.google.devtools.build.lib.util.Classpath.ClassPathException; -import com.google.devtools.build.skydoc.fakebuildapi.FakeActionsInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.FakeBuildApiGlobals; -import com.google.devtools.build.skydoc.fakebuildapi.FakeConfigApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeDefaultInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.FakeOutputGroupInfo.FakeOutputGroupInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkAttrModuleApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkCommandLineApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkNativeModuleApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkRuleFunctionsApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidApplicationResourceInfo.FakeAndroidApplicationResourceInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidAssetsInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidBinaryDataInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidCcLinkParamsProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidFeatureFlagSetProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdeInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdlProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryAarInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryResourceClassJarProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidManifestInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidPreDexJarProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidProguardInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSdkProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidStarlarkCommon; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeDataBindingV2Provider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeProguardMappingProvider; -import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon; -import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary; -import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigStarlarkCommon; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcInfo; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcToolchainConfigInfo; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeGoWrapCcHelper; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyCcLinkParamsProvider; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcHelper; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcInfo; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeProguardSpecProvider; -import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon; -import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoCommon; -import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoInfo.FakeProtoInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyInfo.FakePyInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyRuntimeInfo.FakePyRuntimeInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyStarlarkTransitions; -import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisFailureInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisTestResultInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeCoverageCommon; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeInstrumentedFilesInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule; +import com.google.devtools.build.skydoc.fakebuildapi.FakeApi; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -117,7 +47,15 @@ this.nativeRules = ImmutableList.copyOf(collectNativeRules(productName, provider, inputDirs, blackList)); this.globals = Starlark.UNIVERSE; - this.bzlGlobals = ImmutableMap.copyOf(collectBzlGlobals()); + + ImmutableMap.Builder<String, Object> env = ImmutableMap.builder(); + FakeApi.addPredeclared( + env, + /*rules=*/ Lists.newArrayList(), + /*providers=*/ Lists.newArrayList(), + /*aspects=*/ Lists.newArrayList()); + this.bzlGlobals = env.build(); + this.types = StarlarkDocumentationCollector.getAllModules(); } @@ -163,103 +101,6 @@ return processor.getNativeRules(); } - /* - * Collects a mapping between names and Starlark entities that are available only in BZL files - */ - private Map<String, Object> collectBzlGlobals() { - ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder(); - TopLevelBootstrap topLevelBootstrap = - new TopLevelBootstrap( - new FakeBuildApiGlobals(), - new FakeStarlarkAttrModuleApi(), - new FakeStarlarkCommandLineApi(), - new FakeStarlarkNativeModuleApi(), - new FakeStarlarkRuleFunctionsApi( - Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList()), - new FakeStructProviderApi(), - new FakeOutputGroupInfoProvider(), - new FakeActionsInfoProvider(), - new FakeDefaultInfoProvider()); - AndroidBootstrap androidBootstrap = - new AndroidBootstrap( - new FakeAndroidStarlarkCommon(), - new FakeApkInfoProvider(), - new FakeAndroidInstrumentationInfoProvider(), - new FakeAndroidDeviceBrokerInfoProvider(), - new FakeAndroidResourcesInfoProvider(), - new FakeAndroidNativeLibsInfoProvider(), - new FakeAndroidApplicationResourceInfoProvider(), - new FakeAndroidSdkProvider.FakeProvider(), - new FakeAndroidManifestInfo.FakeProvider(), - new FakeAndroidAssetsInfo.FakeProvider(), - new FakeAndroidLibraryAarInfo.FakeProvider(), - new FakeAndroidProguardInfo.FakeProvider(), - new FakeAndroidIdlProvider.FakeProvider(), - new FakeAndroidIdeInfoProvider.FakeProvider(), - new FakeAndroidPreDexJarProvider.FakeProvider(), - new FakeAndroidCcLinkParamsProvider.FakeProvider(), - new FakeDataBindingV2Provider.FakeProvider(), - new FakeAndroidLibraryResourceClassJarProvider.FakeProvider(), - new FakeAndroidFeatureFlagSetProvider.FakeProvider(), - new FakeProguardMappingProvider.FakeProvider(), - new FakeAndroidBinaryDataInfo.FakeProvider()); - AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon()); - ConfigBootstrap configBootstrap = - new ConfigBootstrap( - new FakeConfigStarlarkCommon(), new FakeConfigApi(), new FakeConfigGlobalLibrary()); - CcBootstrap ccBootstrap = - new CcBootstrap( - new FakeCcModule(), - new FakeCcInfo.Provider(), - new FakeCcToolchainConfigInfo.Provider(), - new FakePyWrapCcHelper(), - new FakeGoWrapCcHelper(), - new FakePyWrapCcInfo.Provider(), - new FakePyCcLinkParamsProvider.Provider()); - JavaBootstrap javaBootstrap = - new JavaBootstrap( - new FakeJavaCommon(), - new FakeJavaInfoProvider(), - new FakeJavaProtoCommon(), - new FakeJavaCcLinkParamsProvider.Provider(), - new FakeProguardSpecProvider.FakeProvider()); - PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon()); - ProtoBootstrap protoBootstrap = - new ProtoBootstrap( - new FakeProtoInfoProvider(), - new FakeProtoCommon(), - new StarlarkAspectStub(), - new ProviderStub()); - PyBootstrap pyBootstrap = - new PyBootstrap( - new FakePyInfoProvider(), - new FakePyRuntimeInfoProvider(), - new FakePyStarlarkTransitions()); - RepositoryBootstrap repositoryBootstrap = - new RepositoryBootstrap(new FakeRepositoryModule(Lists.newArrayList())); - TestingBootstrap testingBootstrap = - new TestingBootstrap( - new FakeTestingModule(), - new FakeCoverageCommon(), - new FakeInstrumentedFilesInfoProvider(), - new FakeAnalysisFailureInfoProvider(), - new FakeAnalysisTestResultInfoProvider()); - - topLevelBootstrap.addBindingsToBuilder(envBuilder); - androidBootstrap.addBindingsToBuilder(envBuilder); - appleBootstrap.addBindingsToBuilder(envBuilder); - ccBootstrap.addBindingsToBuilder(envBuilder); - configBootstrap.addBindingsToBuilder(envBuilder); - javaBootstrap.addBindingsToBuilder(envBuilder); - platformBootstrap.addBindingsToBuilder(envBuilder); - protoBootstrap.addBindingsToBuilder(envBuilder); - pyBootstrap.addBindingsToBuilder(envBuilder); - repositoryBootstrap.addBindingsToBuilder(envBuilder); - testingBootstrap.addBindingsToBuilder(envBuilder); - - return envBuilder.build(); - } - private ConfiguredRuleClassProvider createRuleClassProvider(String classProvider) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, ClassNotFoundException {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index 923fe95..dab01e4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -743,7 +743,7 @@ ImmutableMap<String, Object> nativeRuleSpecificBindings) { ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder(); // Add predeclared symbols of the Bazel build language. - StarlarkModules.addStarlarkGlobalsToBuilder(envBuilder); + StarlarkModules.addPredeclared(envBuilder); // Add all the extensions registered with the rule class provider. envBuilder.putAll(nativeRuleSpecificBindings); return envBuilder.build();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java index 3cd7b44..854b0af 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkModules.java
@@ -21,30 +21,26 @@ import com.google.devtools.build.lib.packages.StarlarkLibrary; import com.google.devtools.build.lib.packages.StarlarkNativeModule; import com.google.devtools.build.lib.packages.StructProvider; -import com.google.devtools.build.lib.starlarkbuildapi.TopLevelBootstrap; +import net.starlark.java.eval.Starlark; -/** The basis for a Starlark Environment with all build-related modules registered. */ +/** The basis for a Starlark Environment with various build-related modules registered. */ public final class StarlarkModules { - private StarlarkModules() { } + private StarlarkModules() {} - /** A bootstrap for non-rules-specific built-ins of the build API. */ - private static TopLevelBootstrap topLevelBootstrap = - new TopLevelBootstrap( - new BazelBuildApiGlobals(), - new StarlarkAttrModule(), - new StarlarkCommandLine(), - new StarlarkNativeModule(), - new StarlarkRuleClassFunctions(), - StructProvider.STRUCT, - OutputGroupInfo.STARLARK_CONSTRUCTOR, - ActionsProvider.INSTANCE, - DefaultInfo.PROVIDER); + // excludes native. platform_common, UNIVRESE /** Adds predeclared Starlark bindings for the Bazel build language. */ - // TODO(adonovan): rename "globals" -> "builtins" - public static void addStarlarkGlobalsToBuilder(ImmutableMap.Builder<String, Object> predeclared) { + public static void addPredeclared(ImmutableMap.Builder<String, Object> predeclared) { predeclared.putAll(StarlarkLibrary.COMMON); // e.g. select, depset - topLevelBootstrap.addBindingsToBuilder(predeclared); + Starlark.addMethods(predeclared, new BazelBuildApiGlobals()); // e.g. configuration_field + Starlark.addMethods(predeclared, new StarlarkRuleClassFunctions()); // e.g. rule + Starlark.addModule(predeclared, new StarlarkCommandLine()); // cmd_helper module + Starlark.addModule(predeclared, new StarlarkAttrModule()); // attr module + Starlark.addModule(predeclared, new StarlarkNativeModule()); // native module + predeclared.put("struct", StructProvider.STRUCT); + predeclared.put("OutputGroupInfo", OutputGroupInfo.STARLARK_CONSTRUCTOR); + predeclared.put("Actions", ActionsProvider.INSTANCE); + predeclared.put("DefaultInfo", DefaultInfo.PROVIDER); } }
diff --git a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TopLevelBootstrap.java b/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TopLevelBootstrap.java deleted file mode 100644 index 42070ee..0000000 --- a/src/main/java/com/google/devtools/build/lib/starlarkbuildapi/TopLevelBootstrap.java +++ /dev/null
@@ -1,71 +0,0 @@ -// Copyright 2018 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package com.google.devtools.build.lib.starlarkbuildapi; - -import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.starlarkbuildapi.DefaultInfoApi.DefaultInfoApiProvider; -import com.google.devtools.build.lib.starlarkbuildapi.OutputGroupInfoApi.OutputGroupInfoApiProvider; -import com.google.devtools.build.lib.starlarkbuildapi.core.Bootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.core.StructApi; -import net.starlark.java.eval.Starlark; - -/** - * A {@link Bootstrap} for top-level libraries of the build API. - */ -public class TopLevelBootstrap implements Bootstrap { - private final StarlarkBuildApiGlobals starlarkBuildApiGlobals; - private final StarlarkAttrModuleApi starlarkAttrModuleApi; - private final StarlarkCommandLineApi starlarkCommandLineApi; - private final StarlarkNativeModuleApi starlarkNativeModuleApi; - private final StarlarkRuleFunctionsApi<?> starlarkRuleFunctionsApi; - private final StructApi.StructProviderApi structProvider; - private final OutputGroupInfoApiProvider outputGroupInfoProvider; - private final ActionsInfoProviderApi actionsInfoProviderApi; - private final DefaultInfoApiProvider<?, ?> defaultInfoProvider; - - public TopLevelBootstrap( - StarlarkBuildApiGlobals starlarkBuildApiGlobals, - StarlarkAttrModuleApi starlarkAttrModuleApi, - StarlarkCommandLineApi starlarkCommandLineApi, - StarlarkNativeModuleApi starlarkNativeModuleApi, - StarlarkRuleFunctionsApi<?> starlarkRuleFunctionsApi, - StructApi.StructProviderApi structProvider, - OutputGroupInfoApiProvider outputGroupInfoProvider, - ActionsInfoProviderApi actionsInfoProviderApi, - DefaultInfoApiProvider<?, ?> defaultInfoProvider) { - this.starlarkAttrModuleApi = starlarkAttrModuleApi; - this.starlarkBuildApiGlobals = starlarkBuildApiGlobals; - this.starlarkCommandLineApi = starlarkCommandLineApi; - this.starlarkNativeModuleApi = starlarkNativeModuleApi; - this.starlarkRuleFunctionsApi = starlarkRuleFunctionsApi; - this.structProvider = structProvider; - this.outputGroupInfoProvider = outputGroupInfoProvider; - this.actionsInfoProviderApi = actionsInfoProviderApi; - this.defaultInfoProvider = defaultInfoProvider; - } - - @Override - public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) { - Starlark.addMethods(builder, starlarkBuildApiGlobals); - Starlark.addMethods(builder, starlarkRuleFunctionsApi); - Starlark.addModule(builder, starlarkAttrModuleApi); // "attr" - Starlark.addModule(builder, starlarkCommandLineApi); // "cmd_helper" - Starlark.addModule(builder, starlarkNativeModuleApi); // "native" - builder.put("struct", structProvider); - builder.put("OutputGroupInfo", outputGroupInfoProvider); - builder.put("Actions", actionsInfoProviderApi); - builder.put("DefaultInfo", defaultInfoProvider); - } -}
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD index 3d02297..9904520 100644 --- a/src/main/java/com/google/devtools/build/skydoc/BUILD +++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -12,22 +12,12 @@ default_visibility = ["//src:__subpackages__"], ) -licenses(["notice"]) # Apache 2.0 +licenses(["notice"]) filegroup( name = "srcs", srcs = glob(["**"]) + [ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository:srcs", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test:srcs", "//src/main/java/com/google/devtools/build/skydoc/renderer:srcs", "//src/main/java/com/google/devtools/build/skydoc/rendering:srcs", "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:srcs", @@ -76,16 +66,6 @@ "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test", "//src/main/java/com/google/devtools/build/skydoc/rendering", "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto", "//src/main/java/com/google/devtools/common/options",
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java index 664a54c..c235d4e 100644 --- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java +++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -28,83 +28,13 @@ import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions; -import com.google.devtools.build.lib.starlarkbuildapi.TopLevelBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBootstrap; import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidDex2OatInfoApi; import com.google.devtools.build.lib.starlarkbuildapi.android.UsesDataBindingProviderApi; -import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.config.ConfigBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcBootstrap; import com.google.devtools.build.lib.starlarkbuildapi.java.GeneratedExtensionRegistryProviderApi; -import com.google.devtools.build.lib.starlarkbuildapi.java.JavaBootstrap; import com.google.devtools.build.lib.starlarkbuildapi.java.JavaNativeLibraryInfoApi; import com.google.devtools.build.lib.starlarkbuildapi.javascript.JsModuleInfoApi; -import com.google.devtools.build.lib.starlarkbuildapi.platform.PlatformBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.python.PyBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; -import com.google.devtools.build.lib.starlarkbuildapi.stubs.ProviderStub; -import com.google.devtools.build.lib.starlarkbuildapi.stubs.StarlarkAspectStub; -import com.google.devtools.build.lib.starlarkbuildapi.test.TestingBootstrap; -import com.google.devtools.build.skydoc.fakebuildapi.FakeActionsInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.FakeBuildApiGlobals; -import com.google.devtools.build.skydoc.fakebuildapi.FakeConfigApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeDefaultInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.FakeOutputGroupInfo.FakeOutputGroupInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkAttrModuleApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkCommandLineApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkNativeModuleApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStarlarkRuleFunctionsApi; +import com.google.devtools.build.skydoc.fakebuildapi.FakeApi; import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi; -import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidApplicationResourceInfo.FakeAndroidApplicationResourceInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidAssetsInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidBinaryDataInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidCcLinkParamsProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidFeatureFlagSetProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdeInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdlProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryAarInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryResourceClassJarProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidManifestInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidPreDexJarProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidProguardInfo; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSdkProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidStarlarkCommon; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeDataBindingV2Provider; -import com.google.devtools.build.skydoc.fakebuildapi.android.FakeProguardMappingProvider; -import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon; -import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary; -import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigStarlarkCommon; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcInfo; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcToolchainConfigInfo; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeGoWrapCcHelper; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyCcLinkParamsProvider; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcHelper; -import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcInfo; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon; -import com.google.devtools.build.skydoc.fakebuildapi.java.FakeProguardSpecProvider; -import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon; -import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoCommon; -import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoInfo.FakeProtoInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyInfo.FakePyInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyRuntimeInfo.FakePyRuntimeInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyStarlarkTransitions; -import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisFailureInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisTestResultInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeCoverageCommon; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeInstrumentedFilesInfoProvider; -import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule; import com.google.devtools.build.skydoc.rendering.AspectInfoWrapper; import com.google.devtools.build.skydoc.rendering.DocstringParseException; import com.google.devtools.build.skydoc.rendering.ProtoRenderer; @@ -440,9 +370,11 @@ } pending.add(path); - Module module = - Module.withPredeclared( - semantics, getPredeclaredEnvironment(ruleInfoList, providerInfoList, aspectInfoList)); + // Add fake build API. + ImmutableMap.Builder<String, Object> env = ImmutableMap.builder(); + FakeApi.addPredeclared(env, ruleInfoList, providerInfoList, aspectInfoList); + addMorePredeclared(env); + Module module = Module.withPredeclared(semantics, env.build()); // parse & compile (and get doc) ParserInput input = getInputSource(path.toString()); @@ -517,110 +449,12 @@ throw new NoSuchFileException(bzlWorkspacePath); } - /** - * Return the predeclared environment containing the fake build API. - * - * @param ruleInfoList the list of {@link RuleInfo} objects, to which rule() invocation - * information will be added - * @param providerInfoList the list of {@link ProviderInfo} objects, to which provider() - * invocation information will be added - */ - private static ImmutableMap<String, Object> getPredeclaredEnvironment( - List<RuleInfoWrapper> ruleInfoList, - List<ProviderInfoWrapper> providerInfoList, - List<AspectInfoWrapper> aspectInfoList) { - TopLevelBootstrap topLevelBootstrap = - new TopLevelBootstrap( - new FakeBuildApiGlobals(), - new FakeStarlarkAttrModuleApi(), - new FakeStarlarkCommandLineApi(), - new FakeStarlarkNativeModuleApi(), - new FakeStarlarkRuleFunctionsApi(ruleInfoList, providerInfoList, aspectInfoList), - new FakeStructProviderApi(), - new FakeOutputGroupInfoProvider(), - new FakeActionsInfoProvider(), - new FakeDefaultInfoProvider()); - AndroidBootstrap androidBootstrap = - new AndroidBootstrap( - new FakeAndroidStarlarkCommon(), - new FakeApkInfoProvider(), - new FakeAndroidInstrumentationInfoProvider(), - new FakeAndroidDeviceBrokerInfoProvider(), - new FakeAndroidResourcesInfoProvider(), - new FakeAndroidNativeLibsInfoProvider(), - new FakeAndroidApplicationResourceInfoProvider(), - new FakeAndroidSdkProvider.FakeProvider(), - new FakeAndroidManifestInfo.FakeProvider(), - new FakeAndroidAssetsInfo.FakeProvider(), - new FakeAndroidLibraryAarInfo.FakeProvider(), - new FakeAndroidProguardInfo.FakeProvider(), - new FakeAndroidIdlProvider.FakeProvider(), - new FakeAndroidIdeInfoProvider.FakeProvider(), - new FakeAndroidPreDexJarProvider.FakeProvider(), - new FakeAndroidCcLinkParamsProvider.FakeProvider(), - new FakeDataBindingV2Provider.FakeProvider(), - new FakeAndroidLibraryResourceClassJarProvider.FakeProvider(), - new FakeAndroidFeatureFlagSetProvider.FakeProvider(), - new FakeProguardMappingProvider.FakeProvider(), - new FakeAndroidBinaryDataInfo.FakeProvider()); - AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon()); - ConfigBootstrap configBootstrap = - new ConfigBootstrap( - new FakeConfigStarlarkCommon(), new FakeConfigApi(), new FakeConfigGlobalLibrary()); - CcBootstrap ccBootstrap = - new CcBootstrap( - new FakeCcModule(), - new FakeCcInfo.Provider(), - new FakeCcToolchainConfigInfo.Provider(), - new FakePyWrapCcHelper(), - new FakeGoWrapCcHelper(), - new FakePyWrapCcInfo.Provider(), - new FakePyCcLinkParamsProvider.Provider()); - JavaBootstrap javaBootstrap = - new JavaBootstrap( - new FakeJavaCommon(), - new FakeJavaInfoProvider(), - new FakeJavaProtoCommon(), - new FakeJavaCcLinkParamsProvider.Provider(), - new FakeProguardSpecProvider.FakeProvider()); - PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon()); - ProtoBootstrap protoBootstrap = - new ProtoBootstrap( - new FakeProtoInfoProvider(), - new FakeProtoCommon(), - new StarlarkAspectStub(), - new ProviderStub()); - PyBootstrap pyBootstrap = - new PyBootstrap( - new FakePyInfoProvider(), - new FakePyRuntimeInfoProvider(), - new FakePyStarlarkTransitions()); - RepositoryBootstrap repositoryBootstrap = - new RepositoryBootstrap(new FakeRepositoryModule(ruleInfoList)); - TestingBootstrap testingBootstrap = - new TestingBootstrap( - new FakeTestingModule(), - new FakeCoverageCommon(), - new FakeInstrumentedFilesInfoProvider(), - new FakeAnalysisFailureInfoProvider(), - new FakeAnalysisTestResultInfoProvider()); - - ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder(); - - // Add stub declarations for Blaze-only things as a quick fix - // for a broken test; see b/155126966 and b/155178103. - // TODO(adonovan): fix properly ASAP. - for (String name : - new String[] { - "js_common", - "pkg_common", - }) { - envBuilder.put(name, Starlark.NONE); - } + private static void addMorePredeclared(ImmutableMap.Builder<String, Object> env) { + addNonBootstrapGlobals(env); // Add dummy declarations that would come from packages.StarlarkLibrary.COMMON // were Skydoc allowed to depend on it. See hack for select below. - envBuilder.put( + env.put( "depset", new StarlarkCallable() { @Override @@ -639,7 +473,7 @@ // Declare a fake implementation of select that just returns the first // value in the dict. (This program is forbidden from depending on the real // implementation of 'select' in lib.packages, and so the hacks multiply.) - envBuilder.put( + env.put( "select", new StarlarkCallable() { @Override @@ -656,21 +490,6 @@ return "select"; } }); - - topLevelBootstrap.addBindingsToBuilder(envBuilder); - androidBootstrap.addBindingsToBuilder(envBuilder); - appleBootstrap.addBindingsToBuilder(envBuilder); - ccBootstrap.addBindingsToBuilder(envBuilder); - configBootstrap.addBindingsToBuilder(envBuilder); - javaBootstrap.addBindingsToBuilder(envBuilder); - platformBootstrap.addBindingsToBuilder(envBuilder); - protoBootstrap.addBindingsToBuilder(envBuilder); - pyBootstrap.addBindingsToBuilder(envBuilder); - repositoryBootstrap.addBindingsToBuilder(envBuilder); - testingBootstrap.addBindingsToBuilder(envBuilder); - addNonBootstrapGlobals(envBuilder); - - return envBuilder.build(); } // TODO(cparsons): Remove this constant by migrating the contained symbols to bootstraps. @@ -681,7 +500,9 @@ GeneratedExtensionRegistryProviderApi.NAME, JavaNativeLibraryInfoApi.NAME, JsModuleInfoApi.NAME, - "JsInfo" + "JsInfo", + "js_common", + "pkg_common", }; /**
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD index 802fdbb..27f81b0 100644 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/BUILD
@@ -13,13 +13,25 @@ java_library( name = "fakebuildapi", - srcs = glob(["*.java"]), + srcs = glob(["**/*.java"]), deps = [ "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/stubs", + "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test", "//src/main/java/com/google/devtools/build/skydoc/rendering", "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto", "//src/main/java/net/starlark/java/eval",
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeApi.java new file mode 100644 index 0000000..11ea82d --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeApi.java
@@ -0,0 +1,188 @@ +// Copyright 2020 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.skydoc.fakebuildapi; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.starlarkbuildapi.android.AndroidBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.apple.AppleBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.config.ConfigBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.cpp.CcBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.java.JavaBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.platform.PlatformBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.proto.ProtoBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.python.PyBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.repository.RepositoryBootstrap; +import com.google.devtools.build.lib.starlarkbuildapi.stubs.ProviderStub; +import com.google.devtools.build.lib.starlarkbuildapi.stubs.StarlarkAspectStub; +import com.google.devtools.build.lib.starlarkbuildapi.test.TestingBootstrap; +import com.google.devtools.build.skydoc.fakebuildapi.FakeOutputGroupInfo.FakeOutputGroupInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidApplicationResourceInfo.FakeAndroidApplicationResourceInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidAssetsInfo; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidBinaryDataInfo; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidCcLinkParamsProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidDeviceBrokerInfo.FakeAndroidDeviceBrokerInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidFeatureFlagSetProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdeInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidIdlProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidInstrumentationInfo.FakeAndroidInstrumentationInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryAarInfo; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidLibraryResourceClassJarProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidManifestInfo; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidNativeLibsInfo.FakeAndroidNativeLibsInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidPreDexJarProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidProguardInfo; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidResourcesInfo.FakeAndroidResourcesInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidSdkProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeAndroidStarlarkCommon; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeApkInfo.FakeApkInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeDataBindingV2Provider; +import com.google.devtools.build.skydoc.fakebuildapi.android.FakeProguardMappingProvider; +import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon; +import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigGlobalLibrary; +import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigStarlarkCommon; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcInfo; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcModule; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeCcToolchainConfigInfo; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakeGoWrapCcHelper; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyCcLinkParamsProvider; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcHelper; +import com.google.devtools.build.skydoc.fakebuildapi.cpp.FakePyWrapCcInfo; +import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCcLinkParamsProvider; +import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon; +import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon; +import com.google.devtools.build.skydoc.fakebuildapi.java.FakeProguardSpecProvider; +import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon; +import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoCommon; +import com.google.devtools.build.skydoc.fakebuildapi.proto.FakeProtoInfo.FakeProtoInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyInfo.FakePyInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyRuntimeInfo.FakePyRuntimeInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.python.FakePyStarlarkTransitions; +import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule; +import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisFailureInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.test.FakeAnalysisTestResultInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.test.FakeCoverageCommon; +import com.google.devtools.build.skydoc.fakebuildapi.test.FakeInstrumentedFilesInfoProvider; +import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule; +import com.google.devtools.build.skydoc.rendering.AspectInfoWrapper; +import com.google.devtools.build.skydoc.rendering.ProviderInfoWrapper; +import com.google.devtools.build.skydoc.rendering.RuleInfoWrapper; +import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.AspectInfo; +import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.ProviderInfo; +import com.google.devtools.build.skydoc.rendering.proto.StardocOutputProtos.RuleInfo; +import java.util.List; +import net.starlark.java.eval.Starlark; + +/** Defines the fake .bzl environment. */ +public final class FakeApi { + + private FakeApi() {} // uninstantiable + + /** + * Adds the predeclared environment containing the fake build API. + * + * @param rules the list of {@link RuleInfo} objects, to which 'rule' and 'repository_rule' + * invocation information will be added + * @param providers the list of {@link ProviderInfo} objects, to which 'provider' invocation + * information will be added + * @param aspects the list of {@link AspectInfo} objects, to which 'aspect' invocation information + * will be added + */ + public static void addPredeclared( + ImmutableMap.Builder<String, Object> env, + /* out parameters: */ + List<RuleInfoWrapper> rules, + List<ProviderInfoWrapper> providers, + List<AspectInfoWrapper> aspects) { + + Starlark.addMethods(env, new FakeBuildApiGlobals()); // e.g. configuration_field func + Starlark.addMethods( + env, new FakeStarlarkRuleFunctionsApi(rules, providers, aspects)); // e.g. rule func + Starlark.addModule(env, new FakeStarlarkAttrModuleApi()); // attr module + Starlark.addModule(env, new FakeStarlarkCommandLineApi()); // cmd_helper module + Starlark.addModule(env, new FakeStarlarkNativeModuleApi()); // native module + env.put("struct", new FakeStructProviderApi()); + env.put("OutputGroupInfo", new FakeOutputGroupInfoProvider()); + env.put("Actions", new FakeActionsInfoProvider()); + env.put("DefaultInfo", new FakeDefaultInfoProvider()); + + new AndroidBootstrap( + new FakeAndroidStarlarkCommon(), + new FakeApkInfoProvider(), + new FakeAndroidInstrumentationInfoProvider(), + new FakeAndroidDeviceBrokerInfoProvider(), + new FakeAndroidResourcesInfoProvider(), + new FakeAndroidNativeLibsInfoProvider(), + new FakeAndroidApplicationResourceInfoProvider(), + new FakeAndroidSdkProvider.FakeProvider(), + new FakeAndroidManifestInfo.FakeProvider(), + new FakeAndroidAssetsInfo.FakeProvider(), + new FakeAndroidLibraryAarInfo.FakeProvider(), + new FakeAndroidProguardInfo.FakeProvider(), + new FakeAndroidIdlProvider.FakeProvider(), + new FakeAndroidIdeInfoProvider.FakeProvider(), + new FakeAndroidPreDexJarProvider.FakeProvider(), + new FakeAndroidCcLinkParamsProvider.FakeProvider(), + new FakeDataBindingV2Provider.FakeProvider(), + new FakeAndroidLibraryResourceClassJarProvider.FakeProvider(), + new FakeAndroidFeatureFlagSetProvider.FakeProvider(), + new FakeProguardMappingProvider.FakeProvider(), + new FakeAndroidBinaryDataInfo.FakeProvider()) + .addBindingsToBuilder(env); + new AppleBootstrap(new FakeAppleCommon()).addBindingsToBuilder(env); + new ConfigBootstrap( + new FakeConfigStarlarkCommon(), // + new FakeConfigApi(), + new FakeConfigGlobalLibrary()) + .addBindingsToBuilder(env); + new CcBootstrap( + new FakeCcModule(), + new FakeCcInfo.Provider(), + new FakeCcToolchainConfigInfo.Provider(), + new FakePyWrapCcHelper(), + new FakeGoWrapCcHelper(), + new FakePyWrapCcInfo.Provider(), + new FakePyCcLinkParamsProvider.Provider()) + .addBindingsToBuilder(env); + new JavaBootstrap( + new FakeJavaCommon(), + new FakeJavaInfoProvider(), + new FakeJavaProtoCommon(), + new FakeJavaCcLinkParamsProvider.Provider(), + new FakeProguardSpecProvider.FakeProvider()) + .addBindingsToBuilder(env); + new PlatformBootstrap(new FakePlatformCommon()).addBindingsToBuilder(env); + new ProtoBootstrap( + new FakeProtoInfoProvider(), + new FakeProtoCommon(), + new StarlarkAspectStub(), + new ProviderStub()) + .addBindingsToBuilder(env); + new PyBootstrap( + new FakePyInfoProvider(), + new FakePyRuntimeInfoProvider(), + new FakePyStarlarkTransitions()) + .addBindingsToBuilder(env); + new RepositoryBootstrap(new FakeRepositoryModule(rules)).addBindingsToBuilder(env); + new TestingBootstrap( + new FakeTestingModule(), + new FakeCoverageCommon(), + new FakeInstrumentedFilesInfoProvider(), + new FakeAnalysisFailureInfoProvider(), + new FakeAnalysisTestResultInfoProvider()) + .addBindingsToBuilder(env); + } +}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD deleted file mode 100644 index 1877c02..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/BUILD +++ /dev/null
@@ -1,31 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "android", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/collect/nestedset", - "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/android", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - "//third_party:jsr305", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD deleted file mode 100644 index 4ffa5c3..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD +++ /dev/null
@@ -1,29 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "apple", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/collect/nestedset", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/apple", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD deleted file mode 100644 index 85207b9..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD +++ /dev/null
@@ -1,25 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "config", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/config", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD deleted file mode 100644 index 72c92d1..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/BUILD +++ /dev/null
@@ -1,31 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "cpp", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/collect/nestedset", - "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/go", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD deleted file mode 100644 index 89b4c3a..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD +++ /dev/null
@@ -1,32 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "java", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/collect/nestedset", - "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/cpp", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/java", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - "//third_party:jsr305", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD deleted file mode 100644 index f6539f1..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD +++ /dev/null
@@ -1,22 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "platform", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto/BUILD deleted file mode 100644 index fff143f..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/proto/BUILD +++ /dev/null
@@ -1,26 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "proto", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/collect/nestedset", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/proto", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - "//third_party:jsr305", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/BUILD deleted file mode 100644 index e0d840c..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/BUILD +++ /dev/null
@@ -1,26 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "python", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/collect/nestedset", - "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/python", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD deleted file mode 100644 index f0b9960..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD +++ /dev/null
@@ -1,28 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "repository", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/events", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/repository", - "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", - "//src/main/java/com/google/devtools/build/skydoc/rendering", - "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - "//third_party:jsr305", - ], -)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD deleted file mode 100644 index e3b9720..0000000 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD +++ /dev/null
@@ -1,26 +0,0 @@ -load("@rules_java//java:defs.bzl", "java_library") - -package( - default_visibility = ["//src:__subpackages__"], -) - -licenses(["notice"]) # Apache 2.0 - -filegroup( - name = "srcs", - srcs = glob(["**"]), -) - -java_library( - name = "test", - srcs = glob(["*.java"]), - deps = [ - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/core", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/platform", - "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi/test", - "//src/main/java/net/starlark/java/eval", - "//src/main/java/net/starlark/java/syntax", - "//third_party:guava", - ], -)
diff --git a/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java b/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java index 5b708e7..485b817 100644 --- a/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java +++ b/src/test/java/com/google/devtools/build/docgen/StarlarkDocumentationTest.java
@@ -55,7 +55,7 @@ @Test public void testStarlarkRuleClassBuiltInItemsAreDocumented() throws Exception { ImmutableMap.Builder<String, Object> env = ImmutableMap.builder(); - StarlarkModules.addStarlarkGlobalsToBuilder(env); + StarlarkModules.addPredeclared(env); checkStarlarkTopLevelEnvItemsAreDocumented(env.build()); }
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java b/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java index 25825a4..a49d14b 100644 --- a/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/starlark/util/BazelEvaluationTestCase.java
@@ -36,7 +36,7 @@ @Override protected Object newModuleHook(ImmutableMap.Builder<String, Object> predeclared) { - StarlarkModules.addStarlarkGlobalsToBuilder(predeclared); + StarlarkModules.addPredeclared(predeclared); Starlark.addModule(predeclared, new PlatformCommon()); // Return the module's client data. (This one uses dummy values for tests.)