diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
22 files changed, 196 insertions, 220 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java index a998570d8f..235dc375f4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java @@ -22,9 +22,9 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; +import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.PackageSpecification; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.syntax.ClassObject; @@ -113,12 +113,12 @@ public abstract class AbstractConfiguredTarget @Override public final Object getIndex(Object key, Location loc) throws EvalException { - if (!(key instanceof ClassObjectConstructor)) { + if (!(key instanceof Provider)) { throw new EvalException(loc, String.format( "Type Target only supports indexing by object constructors, got %s instead", EvalUtils.getDataTypeName(key))); } - ClassObjectConstructor constructor = (ClassObjectConstructor) key; + Provider constructor = (Provider) key; Object declaredProvider = get(constructor.getKey()); if (declaredProvider != null) { return declaredProvider; @@ -133,12 +133,12 @@ public abstract class AbstractConfiguredTarget @Override public boolean containsKey(Object key, Location loc) throws EvalException { - if (!(key instanceof ClassObjectConstructor)) { + if (!(key instanceof Provider)) { throw new EvalException(loc, String.format( "Type Target only supports querying by object constructors, got %s instead", EvalUtils.getDataTypeName(key))); } - return get(((ClassObjectConstructor) key).getKey()) != null; + return get(((Provider) key).getKey()) != null; } @Override @@ -180,7 +180,7 @@ public abstract class AbstractConfiguredTarget /** Returns a declared provider provided by this target. Only meant to use from Skylark. */ @Nullable @Override - public final SkylarkClassObject get(ClassObjectConstructor.Key providerKey) { + public final Info get(Provider.Key providerKey) { if (providerKey.equals(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey())) { return getDefaultProvider(); } @@ -189,8 +189,7 @@ public abstract class AbstractConfiguredTarget /** Implement in subclasses to get a skylark provider for a given {@code providerKey}. */ @Nullable - protected abstract SkylarkClassObject rawGetSkylarkProvider( - ClassObjectConstructor.Key providerKey); + protected abstract Info rawGetSkylarkProvider(Provider.Key providerKey); /** * Returns a value provided by this target. Only meant to use from Skylark. @@ -212,7 +211,6 @@ public abstract class AbstractConfiguredTarget default: return rawGetSkylarkProvider(providerKey); } - } /** Implement in subclasses to get a skylark provider for a given {@code providerKey}. */ diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java index 8eb0f2775c..90441ee26d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java @@ -16,8 +16,8 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import java.util.HashMap; import java.util.Map; @@ -28,13 +28,11 @@ import java.util.Map; public final class ActionsProvider { /** The Actions provider type itself. */ - public static final NativeClassObjectConstructor<SkylarkClassObject> SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor<SkylarkClassObject>(SkylarkClassObject.class, "Actions") {}; + public static final NativeProvider<Info> SKYLARK_CONSTRUCTOR = + new NativeProvider<Info>(Info.class, "Actions") {}; - /** - * Factory method for creating instances of the Actions provider. - */ - public static SkylarkClassObject create(Iterable<ActionAnalysisMetadata> actions) { + /** Factory method for creating instances of the Actions provider. */ + public static Info create(Iterable<ActionAnalysisMetadata> actions) { Map<Artifact, ActionAnalysisMetadata> map = new HashMap<>(); for (ActionAnalysisMetadata action : actions) { for (Artifact artifact : action.getOutputs()) { @@ -46,6 +44,6 @@ public final class ActionsProvider { } } ImmutableMap<String, Object> fields = ImmutableMap.<String, Object>of("by_file", map); - return new SkylarkClassObject(SKYLARK_CONSTRUCTOR, fields); + return new Info(SKYLARK_CONSTRUCTOR, fields); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java index a5ad97eff9..c9462d2f1a 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java @@ -24,8 +24,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.packages.BuildType; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.TriState; import com.google.devtools.build.lib.vfs.PathFragment; @@ -81,9 +81,9 @@ public final class AnalysisUtils { * Returns the list of declared providers (native and Skylark) of the specified Skylark key from a * set of transitive info collections. */ - public static <T extends SkylarkClassObject> Iterable<T> getProviders( + public static <T extends Info> Iterable<T> getProviders( Iterable<? extends TransitiveInfoCollection> prerequisites, - final NativeClassObjectConstructor<T> skylarkKey) { + final NativeProvider<T> skylarkKey) { ImmutableList.Builder<T> result = ImmutableList.builder(); for (TransitiveInfoCollection prerequisite : prerequisites) { T prerequisiteProvider = prerequisite.get(skylarkKey); @@ -102,11 +102,9 @@ public final class AnalysisUtils { return Iterables.filter(prerequisites, target -> target.getProvider(provider) != null); } - /** - * Returns the iterable of collections that have the specified provider. - */ - public static <S extends TransitiveInfoCollection, C extends SkylarkClassObject> Iterable<S> - filterByProvider(Iterable<S> prerequisites, final NativeClassObjectConstructor<C> provider) { + /** Returns the iterable of collections that have the specified provider. */ + public static <S extends TransitiveInfoCollection, C extends Info> Iterable<S> filterByProvider( + Iterable<S> prerequisites, final NativeProvider<C> provider) { return Iterables.filter(prerequisites, target -> target.get(provider) != null); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java index 4e0c62b3f1..23df2954fd 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java @@ -28,8 +28,8 @@ import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.packages.AspectClass; import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.AspectParameters; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.util.Preconditions; @@ -97,7 +97,7 @@ public final class ConfiguredAspect { } } - public SkylarkClassObject get(ClassObjectConstructor.Key key) { + public Info get(Provider.Key key) { return providers.getProvider(key); } @@ -205,9 +205,9 @@ public final class ConfiguredAspect { return this; } - public Builder addSkylarkDeclaredProvider(SkylarkClassObject declaredProvider, Location loc) + public Builder addSkylarkDeclaredProvider(Info declaredProvider, Location loc) throws EvalException { - ClassObjectConstructor constructor = declaredProvider.getConstructor(); + Provider constructor = declaredProvider.getProvider(); if (!constructor.isExported()) { throw new EvalException( constructor.getLocation(), "All providers must be top level values"); @@ -216,12 +216,12 @@ public final class ConfiguredAspect { return this; } - private void addDeclaredProvider(SkylarkClassObject declaredProvider) { + private void addDeclaredProvider(Info declaredProvider) { providers.put(declaredProvider); } - public Builder addNativeDeclaredProvider(SkylarkClassObject declaredProvider) { - ClassObjectConstructor constructor = declaredProvider.getConstructor(); + public Builder addNativeDeclaredProvider(Info declaredProvider) { + Provider constructor = declaredProvider.getProvider(); Preconditions.checkState(constructor.isExported()); addDeclaredProvider(declaredProvider); return this; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java index ab0722c6b1..26ba931295 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java @@ -19,16 +19,16 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; /** DefaultProvider is provided by all targets implicitly and contains all standard fields. */ @Immutable -public final class DefaultProvider extends SkylarkClassObject { +public final class DefaultProvider extends Info { // Accessors for Skylark private static final String DATA_RUNFILES_FIELD = "data_runfiles"; @@ -47,18 +47,18 @@ public final class DefaultProvider extends SkylarkClassObject { private final AtomicReference<SkylarkNestedSet> files = new AtomicReference<>(); public static final String SKYLARK_NAME = "DefaultInfo"; - public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor<SkylarkClassObject>(SkylarkClassObject.class, SKYLARK_NAME) { + public static final Provider SKYLARK_CONSTRUCTOR = + new NativeProvider<Info>(Info.class, SKYLARK_NAME) { @Override - protected SkylarkClassObject createInstanceFromSkylark(Object[] args, Location loc) { + protected Info createInstanceFromSkylark(Object[] args, Location loc) { @SuppressWarnings("unchecked") Map<String, Object> kwargs = (Map<String, Object>) args[0]; - return new SkylarkClassObject(this, kwargs, loc); + return new Info(this, kwargs, loc); } }; private DefaultProvider( - ClassObjectConstructor constructor, + Provider constructor, RunfilesProvider runfilesProvider, FileProvider fileProvider, FilesToRunProvider filesToRunProvider) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java index 83a9266fe5..358a40d4cf 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java @@ -14,9 +14,9 @@ package com.google.devtools.build.lib.analysis; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.EnvironmentGroup; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.util.Preconditions; /** @@ -35,7 +35,7 @@ public final class EnvironmentGroupConfiguredTarget extends AbstractConfiguredTa } @Override - protected SkylarkClassObject rawGetSkylarkProvider(ClassObjectConstructor.Key providerKey) { + protected Info rawGetSkylarkProvider(Provider.Key providerKey) { return null; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java index 0659bb86cd..2c1ed08d06 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java @@ -18,9 +18,9 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.FileTarget; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.rules.fileset.FilesetProvider; import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.util.FileType; @@ -81,7 +81,7 @@ public abstract class FileConfiguredTarget extends AbstractConfiguredTarget } @Override - protected SkylarkClassObject rawGetSkylarkProvider(ClassObjectConstructor.Key providerKey) { + protected Info rawGetSkylarkProvider(Provider.Key providerKey) { return providers.getProvider(providerKey); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java index ec5a58fb3e..de8dbd8b9f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java @@ -15,9 +15,9 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.ClassObjectConstructor.Key; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; +import com.google.devtools.build.lib.packages.Provider.Key; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import java.util.ArrayList; import java.util.List; @@ -76,8 +76,8 @@ public final class MergedConfiguredTarget extends AbstractConfiguredTarget { } @Override - protected SkylarkClassObject rawGetSkylarkProvider(ClassObjectConstructor.Key providerKey) { - SkylarkClassObject provider = providers.getProvider(providerKey); + protected Info rawGetSkylarkProvider(Provider.Key providerKey) { + Info provider = providers.getProvider(providerKey); if (provider == null) { provider = base.get(providerKey); } @@ -142,12 +142,12 @@ public final class MergedConfiguredTarget extends AbstractConfiguredTarget { throw new DuplicateException("Provider " + legacyId + " provided twice"); } aspectProviders.put(legacyId, providers.getProviderInstanceAt(i)); - } else if (providerKey instanceof ClassObjectConstructor.Key) { - ClassObjectConstructor.Key key = (Key) providerKey; + } else if (providerKey instanceof Provider.Key) { + Provider.Key key = (Key) providerKey; if (base.get(key) != null || aspectProviders.contains(key)) { throw new DuplicateException("Provider " + key + " provided twice"); } - aspectProviders.put((SkylarkClassObject) providers.getProviderInstanceAt(i)); + aspectProviders.put((Info) providers.getProviderInstanceAt(i)); } } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java index 9557410dfc..c53ef44acb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java @@ -28,8 +28,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.rules.SkylarkRuleConfiguredTargetUtil; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.EvalUtils; @@ -48,8 +48,8 @@ import javax.annotation.Nullable; * built when the target is mentioned on the command line (as opposed to being always built, like * {@link com.google.devtools.build.lib.analysis.FileProvider}) * - * <p>The artifacts are grouped into "output groups". Which output groups are built is controlled - * by the {@code --output_groups} undocumented command line option, which in turn is added to the + * <p>The artifacts are grouped into "output groups". Which output groups are built is controlled by + * the {@code --output_groups} undocumented command line option, which in turn is added to the * command line at the discretion of the build command being run. * * <p>Output groups starting with an underscore are "not important". This means that artifacts built @@ -57,12 +57,10 @@ import javax.annotation.Nullable; * not mentioned on the output. */ @Immutable -public final class OutputGroupProvider extends SkylarkClassObject - implements SkylarkIndexable, Iterable<String> { +public final class OutputGroupProvider extends Info implements SkylarkIndexable, Iterable<String> { public static final String SKYLARK_NAME = "output_groups"; - public static NativeClassObjectConstructor<OutputGroupProvider> SKYLARK_CONSTRUCTOR = - new Constructor(); + public static NativeProvider<OutputGroupProvider> SKYLARK_CONSTRUCTOR = new Constructor(); /** * Prefix for output groups that are not reported to the user on the terminal output of Blaze when @@ -258,7 +256,7 @@ public final class OutputGroupProvider extends SkylarkClassObject } /** A constructor callable from Skylark for OutputGroupProvider. */ - private static class Constructor extends NativeClassObjectConstructor<OutputGroupProvider> { + private static class Constructor extends NativeProvider<OutputGroupProvider> { private Constructor() { super(OutputGroupProvider.class, "OutputGroupInfo"); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java index e0516dc20d..4085f63363 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java @@ -20,10 +20,10 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.events.Event; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; +import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.PackageGroup; import com.google.devtools.build.lib.packages.PackageSpecification; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.util.Preconditions; /** @@ -81,7 +81,7 @@ public final class PackageGroupConfiguredTarget extends AbstractConfiguredTarget } @Override - protected SkylarkClassObject rawGetSkylarkProvider(ClassObjectConstructor.Key providerKey) { + protected Info rawGetSkylarkProvider(Provider.Key providerKey) { return null; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java index 8f6b61cbc3..028c8c5996 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java @@ -17,10 +17,10 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; +import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.OutputFile; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.Rule; -import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.rules.SkylarkApiProvider; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.syntax.Printer; @@ -129,7 +129,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget { } @Override - protected SkylarkClassObject rawGetSkylarkProvider(ClassObjectConstructor.Key providerKey) { + protected Info rawGetSkylarkProvider(Provider.Key providerKey) { return providers.getProvider(providerKey); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java index 821646843a..fc7bcf6bc3 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java @@ -29,9 +29,9 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.rules.test.ExecutionInfoProvider; @@ -250,13 +250,10 @@ public final class RuleConfiguredTargetBuilder { return this; } - private <T extends TransitiveInfoProvider> void maybeAddSkylarkLegacyProvider( - SkylarkClassObject value) { - if (value.getConstructor() instanceof NativeClassObjectConstructor.WithLegacySkylarkName) { + private <T extends TransitiveInfoProvider> void maybeAddSkylarkLegacyProvider(Info value) { + if (value.getProvider() instanceof NativeProvider.WithLegacySkylarkName) { addSkylarkTransitiveInfo( - ((NativeClassObjectConstructor.WithLegacySkylarkName) value.getConstructor()) - .getSkylarkName(), - value); + ((NativeProvider.WithLegacySkylarkName) value.getProvider()).getSkylarkName(), value); } } @@ -273,18 +270,17 @@ public final class RuleConfiguredTargetBuilder { } /** - * Adds a "declared provider" defined in Skylark to the rule. - * Use this method for declared providers defined in Skyark. + * Adds a "declared provider" defined in Skylark to the rule. Use this method for declared + * providers defined in Skyark. * - * Has special handling for {@link OutputGroupProvider}: that provider is not added - * from Skylark directly, instead its outpuyt groups are added. + * <p>Has special handling for {@link OutputGroupProvider}: that provider is not added from + * Skylark directly, instead its outpuyt groups are added. * - * Use {@link #addNativeDeclaredProvider(SkylarkClassObject)} in definitions of - * native rules. + * <p>Use {@link #addNativeDeclaredProvider(Info)} in definitions of native rules. */ - public RuleConfiguredTargetBuilder addSkylarkDeclaredProvider( - SkylarkClassObject provider, Location loc) throws EvalException { - ClassObjectConstructor constructor = provider.getConstructor(); + public RuleConfiguredTargetBuilder addSkylarkDeclaredProvider(Info provider, Location loc) + throws EvalException { + Provider constructor = provider.getProvider(); if (!constructor.isExported()) { throw new EvalException(constructor.getLocation(), "All providers must be top level values"); @@ -304,26 +300,23 @@ public final class RuleConfiguredTargetBuilder { * Adds "declared providers" defined in native code to the rule. Use this method for declared * providers in definitions of native rules. * - * <p>Use {@link #addSkylarkDeclaredProvider(SkylarkClassObject, Location)} for Skylark rule - * implementations. + * <p>Use {@link #addSkylarkDeclaredProvider(Info, Location)} for Skylark rule implementations. */ - public RuleConfiguredTargetBuilder addNativeDeclaredProviders( - Iterable<SkylarkClassObject> providers) { - for (SkylarkClassObject provider : providers) { + public RuleConfiguredTargetBuilder addNativeDeclaredProviders(Iterable<Info> providers) { + for (Info provider : providers) { addNativeDeclaredProvider(provider); } return this; } /** - * Adds a "declared provider" defined in native code to the rule. - * Use this method for declared providers in definitions of native rules. + * Adds a "declared provider" defined in native code to the rule. Use this method for declared + * providers in definitions of native rules. * - * Use {@link #addSkylarkDeclaredProvider(SkylarkClassObject, Location)} - * for Skylark rule implementations. + * <p>Use {@link #addSkylarkDeclaredProvider(Info, Location)} for Skylark rule implementations. */ - public RuleConfiguredTargetBuilder addNativeDeclaredProvider(SkylarkClassObject provider) { - ClassObjectConstructor constructor = provider.getConstructor(); + public RuleConfiguredTargetBuilder addNativeDeclaredProvider(Info provider) { + Provider constructor = provider.getProvider(); Preconditions.checkState(constructor.isExported()); providersBuilder.put(provider); maybeAddSkylarkLegacyProvider(provider); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index cd7b72b867..de978e0940 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -64,8 +64,9 @@ import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy; import com.google.devtools.build.lib.packages.FileTarget; import com.google.devtools.build.lib.packages.FilesetEntry; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction; +import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.InputFile; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.PackageSpecification; import com.google.devtools.build.lib.packages.RawAttributeMapper; @@ -74,7 +75,6 @@ import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.packages.RuleErrorConsumer; -import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.rules.AliasProvider; @@ -717,9 +717,7 @@ public final class RuleContext extends TargetContext checkAttribute(attributeName, Mode.SPLIT); Map<Optional<String>, ? extends List<? extends TransitiveInfoCollection>> map = getSplitPrerequisites(attributeName); - return map.isEmpty() - ? ImmutableList.of() - : map.entrySet().iterator().next().getValue(); + return map.isEmpty() ? ImmutableList.of() : map.entrySet().iterator().next().getValue(); } checkAttribute(attributeName, mode); @@ -820,13 +818,13 @@ public final class RuleContext extends TargetContext } /** - * For a given attribute, returns all declared provider provided by targets - * of that attribute. Each declared provider is keyed by the - * {@link BuildConfiguration} under which the provider was created. + * For a given attribute, returns all declared provider provided by targets of that attribute. + * Each declared provider is keyed by the {@link BuildConfiguration} under which the provider was + * created. */ - public <C extends SkylarkClassObject> ImmutableListMultimap<BuildConfiguration, C> - getPrerequisitesByConfiguration(String attributeName, Mode mode, - final NativeClassObjectConstructor<C> provider) { + public <C extends Info> + ImmutableListMultimap<BuildConfiguration, C> getPrerequisitesByConfiguration( + String attributeName, Mode mode, final NativeProvider<C> provider) { List<? extends TransitiveInfoCollection> transitiveInfoCollections = getPrerequisites(attributeName, mode); @@ -873,8 +871,8 @@ public final class RuleContext extends TargetContext * Returns all the declared providers (native and Skylark) for the specified constructor under the * specified attribute of this target in the BUILD file. */ - public <T extends SkylarkClassObject> Iterable<T> getPrerequisites( - String attributeName, Mode mode, final NativeClassObjectConstructor<T> skylarkKey) { + public <T extends Info> Iterable<T> getPrerequisites( + String attributeName, Mode mode, final NativeProvider<T> skylarkKey) { return AnalysisUtils.getProviders(getPrerequisites(attributeName, mode), skylarkKey); } @@ -884,8 +882,8 @@ public final class RuleContext extends TargetContext * TransitiveInfoCollection under the specified attribute. */ @Nullable - public <T extends SkylarkClassObject> T getPrerequisite( - String attributeName, Mode mode, final NativeClassObjectConstructor<T> skylarkKey) { + public <T extends Info> T getPrerequisite( + String attributeName, Mode mode, final NativeProvider<T> skylarkKey) { TransitiveInfoCollection prerequisite = getPrerequisite(attributeName, mode); return prerequisite == null ? null : prerequisite.get(skylarkKey); } @@ -904,9 +902,8 @@ public final class RuleContext extends TargetContext * Returns all the providers of the specified type that are listed under the specified attribute * of this target in the BUILD file, and that contain the specified provider. */ - public <C extends SkylarkClassObject> - Iterable<? extends TransitiveInfoCollection> getPrerequisitesIf( - String attributeName, Mode mode, final NativeClassObjectConstructor<C> classType) { + public <C extends Info> Iterable<? extends TransitiveInfoCollection> getPrerequisitesIf( + String attributeName, Mode mode, final NativeProvider<C> classType) { return AnalysisUtils.filterByProvider(getPrerequisites(attributeName, mode), classType); } @@ -1978,8 +1975,8 @@ public final class RuleContext extends TargetContext } /** - * Because some rules still have to use allowedRuleClasses to do rule dependency validation. - * A dependency is valid if it is from a rule in allowedRuledClasses, OR if all of the providers + * Because some rules still have to use allowedRuleClasses to do rule dependency validation. A + * dependency is valid if it is from a rule in allowedRuledClasses, OR if all of the providers * in requiredProviders are provided by the target. */ private void validateRuleDependency(ConfiguredTarget prerequisite, Attribute attribute) { @@ -1993,8 +1990,7 @@ public final class RuleContext extends TargetContext return; } - if (checkRuleDependencyMandatoryProviders(prerequisite, attribute, - unfulfilledRequirements)) { + if (checkRuleDependencyMandatoryProviders(prerequisite, attribute, unfulfilledRequirements)) { return; } @@ -2005,14 +2001,13 @@ public final class RuleContext extends TargetContext } } - /** - * Check if prerequisite should be allowed based on its rule class. - */ - private boolean checkRuleDependencyClass(ConfiguredTarget prerequisite, Attribute attribute, - Set<String> unfulfilledRequirements) { + /** Check if prerequisite should be allowed based on its rule class. */ + private boolean checkRuleDependencyClass( + ConfiguredTarget prerequisite, Attribute attribute, Set<String> unfulfilledRequirements) { if (attribute.getAllowedRuleClassesPredicate() != Predicates.<RuleClass>alwaysTrue()) { - if (attribute.getAllowedRuleClassesPredicate().apply( - ((Rule) prerequisite.getTarget()).getRuleClassObject())) { + if (attribute + .getAllowedRuleClassesPredicate() + .apply(((Rule) prerequisite.getTarget()).getRuleClassObject())) { // prerequisite has an allowed rule class => accept. return true; } @@ -2031,16 +2026,21 @@ public final class RuleContext extends TargetContext /** * Check if prerequisite should be allowed with warning based on its rule class. * - * If yes, also issues said warning. + * <p>If yes, also issues said warning. */ - private boolean checkRuleDependencyClassWarnings(ConfiguredTarget prerequisite, - Attribute attribute) { - if (attribute.getAllowedRuleClassesWarningPredicate().apply( - ((Rule) prerequisite.getTarget()).getRuleClassObject())) { + private boolean checkRuleDependencyClassWarnings( + ConfiguredTarget prerequisite, Attribute attribute) { + if (attribute + .getAllowedRuleClassesWarningPredicate() + .apply(((Rule) prerequisite.getTarget()).getRuleClassObject())) { Predicate<RuleClass> allowedRuleClasses = attribute.getAllowedRuleClassesPredicate(); - reportBadPrerequisite(attribute, prerequisite.getTarget().getTargetKind(), prerequisite, + reportBadPrerequisite( + attribute, + prerequisite.getTarget().getTargetKind(), + prerequisite, allowedRuleClasses == Predicates.<RuleClass>alwaysTrue() - ? null : "expected " + allowedRuleClasses, + ? null + : "expected " + allowedRuleClasses, true); // prerequisite has a rule class allowed with a warning => accept, emitting a warning. return true; @@ -2048,12 +2048,9 @@ public final class RuleContext extends TargetContext return false; } - /** - * Check if prerequisite should be allowed based on required providers on - * the attribute. - */ - private boolean checkRuleDependencyMandatoryProviders(ConfiguredTarget prerequisite, - Attribute attribute, Set<String> unfulfilledRequirements) { + /** Check if prerequisite should be allowed based on required providers on the attribute. */ + private boolean checkRuleDependencyMandatoryProviders( + ConfiguredTarget prerequisite, Attribute attribute, Set<String> unfulfilledRequirements) { RequiredProviders requiredProviders = attribute.getRequiredProviders(); if (requiredProviders.acceptsAny()) { @@ -2066,7 +2063,8 @@ public final class RuleContext extends TargetContext } unfulfilledRequirements.add( - String.format("'%s' does not have mandatory providers: %s", + String.format( + "'%s' does not have mandatory providers: %s", prerequisite.getLabel(), prerequisite.missingProviders(requiredProviders).getDescription())); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviderCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviderCollection.java index cbe80a67d2..2187da0cae 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviderCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviderCollection.java @@ -14,9 +14,9 @@ package com.google.devtools.build.lib.analysis; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import javax.annotation.Nullable; @@ -36,18 +36,18 @@ public interface SkylarkProviderCollection { /** * Returns the declared provider requested, or null, if the information is not found. * - * Use {@link #get(NativeClassObjectConstructor)} for native providers. + * <p>Use {@link #get(NativeProvider)} for native providers. */ @Nullable - SkylarkClassObject get(ClassObjectConstructor.Key providerKey); + Info get(Provider.Key providerKey); /** * Returns the native declared provider requested, or null, if the information is not found. * - * Type-safe version of {@link #get(ClassObjectConstructor.Key)} for native providers. + * <p>Type-safe version of {@link #get(Provider.Key)} for native providers. */ @Nullable - default <T extends SkylarkClassObject> T get(NativeClassObjectConstructor<T> provider) { + default <T extends Info> T get(NativeProvider<T> provider) { return provider.getValueClass().cast(get(provider.getKey())); } @@ -55,9 +55,8 @@ public interface SkylarkProviderCollection { * Returns the provider defined in Skylark, or null, if the information is not found. The * transitive information has to have been added using the Skylark framework. * - * <p>This method dispatches to either {@link #get(ClassObjectConstructor.Key)} or {@link - * #get(String)} depending on whether {@link SkylarkProviderIdentifier} is for legacy or for - * declared provider. + * <p>This method dispatches to either {@link #get(Provider.Key)} or {@link #get(String)} + * depending on whether {@link SkylarkProviderIdentifier} is for legacy or for declared provider. */ @Nullable default Object get(SkylarkProviderIdentifier id) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java index 23c2238d58..b3b4894e2f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java @@ -87,22 +87,18 @@ public interface TransitiveInfoCollection extends SkylarkIndexable, SkylarkProvi default boolean satisfies(RequiredProviders providers) { return providers.isSatisfiedBy( aClass -> getProvider(aClass.asSubclass(TransitiveInfoProvider.class)) != null, - id -> this.get(id) != null - ); + id -> this.get(id) != null); } /** - * Returns providers that this {@link TransitiveInfoCollection} misses from - * a given {@link RequiredProviders}. + * Returns providers that this {@link TransitiveInfoCollection} misses from a given {@link + * RequiredProviders}. * - * If none are missing, returns {@link RequiredProviders} that accept any set - * of providers. + * <p>If none are missing, returns {@link RequiredProviders} that accept any set of providers. */ default RequiredProviders missingProviders(RequiredProviders providers) { return providers.getMissing( aClass -> getProvider(aClass.asSubclass(TransitiveInfoProvider.class)) != null, - id -> this.get(id) != null - ); + id -> this.get(id) != null); } - } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java index d8fa9ae4ae..9d83702a6a 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java @@ -14,26 +14,26 @@ package com.google.devtools.build.lib.analysis; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; /** - * Provides a mapping between an identifier for transitive information and its instance. - * (between provider identifier and provider instance) + * Provides a mapping between an identifier for transitive information and its instance. (between + * provider identifier and provider instance) + * + * <p>We have three kinds of provider identifiers: * - * We have three kinds of provider identifiers: * <ul> - * <li>Declared providers. They are exposed to Skylark and identified by - * {@link ClassObjectConstructor.Key}. Provider instances are {@link SkylarkClassObject}s.</li> - * <li>Native providers. They are identified by their {@link Class} and their instances - * are instances of that class. They should implement {@link TransitiveInfoProvider} marker - * interface. - * </li> - * <li>Legacy Skylark providers (deprecated). They are identified by simple strings, - * and their instances are more-less random objects.</li> + * <li>Declared providers. They are exposed to Skylark and identified by {@link Provider.Key}. + * Provider instances are {@link Info}s. + * <li>Native providers. They are identified by their {@link Class} and their instances are + * instances of that class. They should implement {@link TransitiveInfoProvider} marker + * interface. + * <li>Legacy Skylark providers (deprecated). They are identified by simple strings, and their + * instances are more-less random objects. * </ul> */ @Immutable @@ -43,11 +43,11 @@ public interface TransitiveInfoProviderMap { <P extends TransitiveInfoProvider> P getProvider(Class<P> providerClass); /** - * Returns the instance of declared provider with the given {@code key}, - * or {@code null} if not present. + * Returns the instance of declared provider with the given {@code key}, or {@code null} if not + * present. */ @Nullable - SkylarkClassObject getProvider(ClassObjectConstructor.Key key); + Info getProvider(Provider.Key key); /** * Returns the instance of a legacy Skylark with the given name, or {@code null} if not present. @@ -80,10 +80,11 @@ public interface TransitiveInfoProviderMap { /** * Return value is one of: + * * <ul> - * <li>{@code Class<? extends TransitiveInfoProvider>}</li> - * <li>String</li> - * <li>{@link ClassObjectConstructor.Key}</li> + * <li>{@code Class<? extends TransitiveInfoProvider>} + * <li>String + * <li>{@link Provider.Key} * </ul> * * Low-level method, use with care. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java index f46689c247..4f1b753727 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java @@ -14,8 +14,8 @@ package com.google.devtools.build.lib.analysis; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.util.Preconditions; import java.util.Arrays; import java.util.LinkedHashMap; @@ -39,7 +39,7 @@ public class TransitiveInfoProviderMapBuilder { return providers.containsKey(legacyId); } - public boolean contains(ClassObjectConstructor.Key key) { + public boolean contains(Provider.Key key) { return providers.containsKey(key); } @@ -48,9 +48,8 @@ public class TransitiveInfoProviderMapBuilder { Class<? extends T> providerClass, T provider) { Preconditions.checkNotNull(providerClass); Preconditions.checkNotNull(provider); - Preconditions.checkState(!(provider instanceof SkylarkClassObject), - "Expose %s as native declared provider", - providerClass); + Preconditions.checkState( + !(provider instanceof Info), "Expose %s as native declared provider", providerClass); // TODO(arielb): throw an exception if the providerClass is already present? // This is enforced by aspects but RuleConfiguredTarget presents violations @@ -59,13 +58,13 @@ public class TransitiveInfoProviderMapBuilder { return this; } - public TransitiveInfoProviderMapBuilder put(SkylarkClassObject classObject) { + public TransitiveInfoProviderMapBuilder put(Info classObject) { Preconditions.checkNotNull(classObject); Preconditions.checkState(!(classObject instanceof TransitiveInfoProvider), "Declared provider %s should not implement TransitiveInfoProvider", classObject.getClass()); - providers.put(classObject.getConstructor().getKey(), classObject); + providers.put(classObject.getProvider().getKey(), classObject); return this; } @@ -105,8 +104,8 @@ public class TransitiveInfoProviderMapBuilder { } @Nullable - public SkylarkClassObject getProvider(ClassObjectConstructor.Key key) { - return (SkylarkClassObject) providers.get(key); + public Info getProvider(Provider.Key key) { + return (Info) providers.get(key); } public TransitiveInfoProviderMap build() { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java index b0ba5836a3..b43129d902 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java @@ -15,8 +15,8 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.collect.ImmutableSharedKeyMap; -import com.google.devtools.build.lib.packages.ClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.Provider; import java.util.Map; import javax.annotation.Nullable; @@ -43,8 +43,8 @@ class TransitiveInfoProviderMapImpl @Nullable @Override - public SkylarkClassObject getProvider(ClassObjectConstructor.Key key) { - return (SkylarkClassObject) get(key); + public Info getProvider(Provider.Key key) { + return (Info) get(key); } @Nullable diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java index 6020817a48..e790180d53 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java @@ -19,8 +19,8 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; @@ -35,7 +35,7 @@ import com.google.devtools.build.lib.syntax.SkylarkType; category = SkylarkModuleCategory.PROVIDER ) @Immutable -public class ConstraintSettingInfo extends SkylarkClassObject { +public class ConstraintSettingInfo extends Info { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "ConstraintSettingInfo"; @@ -53,8 +53,8 @@ public class ConstraintSettingInfo extends SkylarkClassObject { /*types=*/ ImmutableList.<SkylarkType>of(SkylarkType.of(Label.class))); /** Skylark constructor and identifier for this provider. */ - public static final NativeClassObjectConstructor<ConstraintSettingInfo> SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor<ConstraintSettingInfo>( + public static final NativeProvider<ConstraintSettingInfo> SKYLARK_CONSTRUCTOR = + new NativeProvider<ConstraintSettingInfo>( ConstraintSettingInfo.class, SKYLARK_NAME, SIGNATURE) { @Override protected ConstraintSettingInfo createInstanceFromSkylark(Object[] args, Location loc) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java index 9cd1fac8ce..53d8ae1256 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java @@ -19,8 +19,8 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; @@ -35,7 +35,7 @@ import com.google.devtools.build.lib.syntax.SkylarkType; category = SkylarkModuleCategory.PROVIDER ) @Immutable -public class ConstraintValueInfo extends SkylarkClassObject { +public class ConstraintValueInfo extends Info { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "ConstraintValueInfo"; @@ -55,9 +55,8 @@ public class ConstraintValueInfo extends SkylarkClassObject { SkylarkType.of(Label.class), SkylarkType.of(ConstraintSettingInfo.class))); /** Skylark constructor and identifier for this provider. */ - public static final NativeClassObjectConstructor<ConstraintValueInfo> SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor<ConstraintValueInfo>( - ConstraintValueInfo.class, SKYLARK_NAME, SIGNATURE) { + public static final NativeProvider<ConstraintValueInfo> SKYLARK_CONSTRUCTOR = + new NativeProvider<ConstraintValueInfo>(ConstraintValueInfo.class, SKYLARK_NAME, SIGNATURE) { @Override protected ConstraintValueInfo createInstanceFromSkylark(Object[] args, Location loc) throws EvalException { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java index 9e5c917712..8d8b669785 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java @@ -22,8 +22,8 @@ import com.google.common.collect.Multimap; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; @@ -44,7 +44,7 @@ import javax.annotation.Nullable; category = SkylarkModuleCategory.PROVIDER ) @Immutable -public class PlatformInfo extends SkylarkClassObject { +public class PlatformInfo extends Info { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "PlatformInfo"; @@ -66,8 +66,8 @@ public class PlatformInfo extends SkylarkClassObject { SkylarkType.LIST, SkylarkType.of(ConstraintValueInfo.class)))); /** Skylark constructor and identifier for this provider. */ - public static final NativeClassObjectConstructor<PlatformInfo> SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor<PlatformInfo>(PlatformInfo.class, SKYLARK_NAME, SIGNATURE) { + public static final NativeProvider<PlatformInfo> SKYLARK_CONSTRUCTOR = + new NativeProvider<PlatformInfo>(PlatformInfo.class, SKYLARK_NAME, SIGNATURE) { @Override protected PlatformInfo createInstanceFromSkylark(Object[] args, Location loc) throws EvalException { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java index d8d1282ef4..dcdde460bc 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java @@ -18,8 +18,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.events.Location; -import com.google.devtools.build.lib.packages.NativeClassObjectConstructor; -import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.Info; +import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; import com.google.devtools.build.lib.syntax.EvalException; @@ -38,7 +38,7 @@ import java.util.Map; category = SkylarkModuleCategory.PROVIDER ) @Immutable -public class ToolchainInfo extends SkylarkClassObject { +public class ToolchainInfo extends Info { /** Name used in Skylark for accessing this provider. */ public static final String SKYLARK_NAME = "ToolchainInfo"; @@ -56,9 +56,8 @@ public class ToolchainInfo extends SkylarkClassObject { /*types=*/ ImmutableList.<SkylarkType>of(SkylarkType.DICT)); /** Skylark constructor and identifier for this provider. */ - public static final NativeClassObjectConstructor<ToolchainInfo> SKYLARK_CONSTRUCTOR = - new NativeClassObjectConstructor<ToolchainInfo>( - ToolchainInfo.class, SKYLARK_NAME, SIGNATURE) { + public static final NativeProvider<ToolchainInfo> SKYLARK_CONSTRUCTOR = + new NativeProvider<ToolchainInfo>(ToolchainInfo.class, SKYLARK_NAME, SIGNATURE) { @Override protected ToolchainInfo createInstanceFromSkylark(Object[] args, Location loc) throws EvalException { |