From f0cadba61c373f1c2e3fcdb985bd7976dedefa83 Mon Sep 17 00:00:00 2001 From: John Cater Date: Thu, 17 Feb 2022 15:02:08 -0800 Subject: [PATCH] Move LabelConversionContext to a new top-level class. Also add a convenience method to create a label converter for a starlark thread. This makes it more easily available for other uses. Part of Optional Toolchains (#14726). Closes #14815. PiperOrigin-RevId: 429410754 --- .../analysis/starlark/StarlarkAttrModule.java | 7 +- .../starlark/StarlarkRuleClassFunctions.java | 13 +-- .../starlark/StarlarkToolchainContext.java | 16 +--- .../bzlmod/BazelModuleResolutionFunction.java | 13 ++- .../lib/bazel/bzlmod/StarlarkBazelModule.java | 11 +-- .../lib/bazel/bzlmod/TypeCheckedTag.java | 8 +- .../build/lib/packages/BuildType.java | 80 +++-------------- .../build/lib/packages/LabelConverter.java | 90 +++++++++++++++++++ .../build/lib/packages/RuleClass.java | 9 +- .../lib/bazel/bzlmod/TypeCheckedTagTest.java | 23 +++-- .../build/lib/packages/BuildTypeTest.java | 32 +------ .../lib/packages/LabelConverterTest.java | 58 ++++++++++++ 12 files changed, 196 insertions(+), 164 deletions(-) create mode 100644 src/main/java/com/google/devtools/build/lib/packages/LabelConverter.java create mode 100644 src/test/java/com/google/devtools/build/lib/packages/LabelConverterTest.java diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkAttrModule.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkAttrModule.java index d48e217760a939..71ea571df6c1d8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkAttrModule.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkAttrModule.java @@ -33,6 +33,7 @@ import com.google.devtools.build.lib.packages.BazelModuleContext; import com.google.devtools.build.lib.packages.BazelStarlarkContext; import com.google.devtools.build.lib.packages.BuildType; +import com.google.devtools.build.lib.packages.LabelConverter; import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.StarlarkAspect; import com.google.devtools.build.lib.packages.StarlarkCallbackHelper; @@ -44,7 +45,6 @@ import com.google.devtools.build.lib.starlarkbuildapi.StarlarkAttrModuleApi; import com.google.devtools.build.lib.util.FileType; import com.google.devtools.build.lib.util.FileTypeSet; -import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Nullable; @@ -145,10 +145,7 @@ private static Attribute.Builder createAttribute( BazelModuleContext moduleContext = BazelModuleContext.of(Module.ofInnermostEnclosingStarlarkFunction(thread)); builder.defaultValue( - defaultValue, - new BuildType.LabelConversionContext( - moduleContext.label(), moduleContext.repoMapping(), new HashMap<>()), - DEFAULT_ARG); + defaultValue, LabelConverter.forModuleContext(moduleContext), DEFAULT_ARG); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java index 923abbf0936c75..a16fc34d203e68 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/starlark/StarlarkRuleClassFunctions.java @@ -68,12 +68,12 @@ import com.google.devtools.build.lib.packages.BazelStarlarkContext; import com.google.devtools.build.lib.packages.BuildSetting; import com.google.devtools.build.lib.packages.BuildType; -import com.google.devtools.build.lib.packages.BuildType.LabelConversionContext; import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy.MissingFragmentPolicy; import com.google.devtools.build.lib.packages.ExecGroup; import com.google.devtools.build.lib.packages.FunctionSplitTransitionAllowlist; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.StarlarkImplicitOutputsFunctionWithCallback; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.StarlarkImplicitOutputsFunctionWithMap; +import com.google.devtools.build.lib.packages.LabelConverter; import com.google.devtools.build.lib.packages.Package.NameConflictException; import com.google.devtools.build.lib.packages.PackageFactory.PackageContext; import com.google.devtools.build.lib.packages.PredicateWithMessage; @@ -568,17 +568,10 @@ private static void checkAttributeName(String name) throws EvalException { private static ImmutableList