aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ActionsProvider.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/EnvironmentGroupConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java16
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/PackageGroupConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java51
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java84
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/SkylarkProviderCollection.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoCollection.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMap.java39
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapImpl.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintSettingInfo.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ConstraintValueInfo.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java10
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java11
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 {