diff options
author | 2017-04-11 17:55:55 +0000 | |
---|---|---|
committer | 2017-04-12 11:49:05 +0200 | |
commit | 3aa7d2f0548d4fda0df94722127245896c2b3ead (patch) | |
tree | 5c810f13cf6a77caa57dabb1bc2101acf7211b64 /src/main | |
parent | 350f63822c6f693e2742166c690ea013979ab896 (diff) |
Used 'DefaultInfo' instead of `ctx.default_provider`.
This follows our CamelCaseInfo naming conventions for providers.
RELNOTES: None.
PiperOrigin-RevId: 152832215
Diffstat (limited to 'src/main')
6 files changed, 38 insertions, 29 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 f5313b8ca0..1e7deca5b9 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 @@ -26,7 +26,6 @@ import com.google.devtools.build.lib.packages.ClassObjectConstructor; import com.google.devtools.build.lib.packages.PackageSpecification; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; import com.google.devtools.build.lib.packages.Target; -import com.google.devtools.build.lib.rules.SkylarkRuleContext; import com.google.devtools.build.lib.syntax.ClassObject; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.EvalUtils; @@ -109,7 +108,7 @@ public abstract class AbstractConfiguredTarget public Object getValue(String name) { // Standard fields should be proxied to their default provider object DefaultProvider defaultProvider = - (DefaultProvider) get(SkylarkRuleContext.getDefaultProvider().getKey()); + (DefaultProvider) get(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey()); switch (name) { case FILES_FIELD: case DEFAULT_RUNFILES_FIELD: 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 c0c2a317a4..93b2646f86 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 @@ -16,9 +16,10 @@ package com.google.devtools.build.lib.analysis; 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.rules.SkylarkRuleContext; import com.google.devtools.build.lib.syntax.SkylarkNestedSet; import java.util.Map; @@ -31,6 +32,17 @@ public final class DefaultProvider extends SkylarkClassObject { private static final String DEFAULT_RUNFILES_FIELD = "default_runfiles"; private static final String FILES_FIELD = "files"; + public static final String SKYLARK_NAME = "DefaultInfo"; + public static final ClassObjectConstructor SKYLARK_CONSTRUCTOR = + new NativeClassObjectConstructor(SKYLARK_NAME) { + @Override + protected SkylarkClassObject createInstanceFromSkylark(Object[] args, Location loc) { + @SuppressWarnings("unchecked") + Map<String, Object> kwargs = (Map<String, Object>) args[0]; + return new SkylarkClassObject(this, kwargs, loc); + } + }; + private DefaultProvider(ClassObjectConstructor constructor, Map<String, Object> values) { super(constructor, values); } @@ -52,7 +64,6 @@ public final class DefaultProvider extends SkylarkClassObject { FILES_FIELD, SkylarkNestedSet.of(Artifact.class, fileProvider.getFilesToBuild())); attrBuilder.put(FilesToRunProvider.SKYLARK_NAME, filesToRunProvider); - ClassObjectConstructor constructor = SkylarkRuleContext.getDefaultProvider(); - return new DefaultProvider(constructor, attrBuilder.build()); + return new DefaultProvider(SKYLARK_CONSTRUCTOR, attrBuilder.build()); } } 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 0fe798b6d8..e7ec0dd169 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 @@ -22,7 +22,6 @@ 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.rules.SkylarkRuleContext; 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; @@ -50,7 +49,7 @@ public abstract class FileConfiguredTarget extends AbstractConfiguredTarget SkylarkProviders skylarkProviders = new SkylarkProviders( ImmutableMap.<String, Object>of(), - ImmutableMap.of(SkylarkRuleContext.getDefaultProvider().getKey(), defaultProvider)); + ImmutableMap.of(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey(), defaultProvider)); TransitiveInfoProviderMap.Builder builder = TransitiveInfoProviderMap.builder() .put(VisibilityProvider.class, this) diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java index 453cba5e43..24803c108a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java @@ -37,6 +37,7 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ActionsProvider; import com.google.devtools.build.lib.analysis.BaseRuleClasses; +import com.google.devtools.build.lib.analysis.DefaultProvider; import com.google.devtools.build.lib.analysis.OutputGroupProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.cmdline.Label; @@ -190,6 +191,22 @@ public class SkylarkRuleClassFunctions { ) private static final ClassObjectConstructor struct = NativeClassObjectConstructor.STRUCT; + @SkylarkSignature( + name = "DefaultInfo", + returnType = ClassObjectConstructor.class, + doc = "A provider that is provided by every rule, even if it iss not returned explicitly. " + + "A <code>DefaultInfo</code> accepts all special parameters that can be returned " + + "from rule implementation function in a struct, which are <code>runfiles</code>, " + + "<code>data_runfiles</code>, <code>default_runfiles</code>, " + + "<code>output_groups</code>, <code>instrumented_files</code>, and all " + + "<a href=\"skylark-provider.html\">providers</a> that are available on built-in rules. " + + "Each instance of the default provider contains the following standard fields: " + + "<code>data_runfiles</code>, <code>default_runfiles</code>, <code>files</code>, " + + "and <code>files_to_run</code>. The values of these fields are equivalent to the " + + "values of the corresponding fields of the target the default provider belongs to." + ) + private static final ClassObjectConstructor defaultInfo = DefaultProvider.SKYLARK_CONSTRUCTOR; + // TODO(bazel-team): Move to a "testing" namespace module. Normally we'd pass an objectType // to @SkylarkSignature to do this, but that doesn't work here because we're exposing an already- // configured BaseFunction, rather than defining a new BuiltinFunction. This should wait for diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java index 6f0ac7f0a3..b9c705739f 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ActionsProvider; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.DefaultProvider; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.Runfiles; @@ -256,7 +257,7 @@ public final class SkylarkRuleConfiguredTargetBuilder { "A return value of a rule implementation function should be " + "a sequence of declared providers"); if (declaredProvider.getConstructor().getKey().equals( - SkylarkRuleContext.getDefaultProvider().getKey())) { + DefaultProvider.SKYLARK_CONSTRUCTOR.getKey())) { parseProviderKeys(declaredProvider, true, ruleContext, loc, executable, registeredProviderTypes, builder); isParsed = true; diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java index 2a32c96f42..897d77ac01 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.Root; import com.google.devtools.build.lib.analysis.ActionsProvider; import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.analysis.ConfigurationMakeVariableContext; +import com.google.devtools.build.lib.analysis.DefaultProvider; import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.LabelExpander; import com.google.devtools.build.lib.analysis.LabelExpander.NotUniqueExpansionException; @@ -595,31 +596,12 @@ public final class SkylarkRuleContext implements SkylarkValue { return ruleContext; } - private static final ClassObjectConstructor DEFAULT_PROVIDER = - new NativeClassObjectConstructor("default_provider") { - @Override - protected SkylarkClassObject createInstanceFromSkylark(Object[] args, Location loc) { - @SuppressWarnings("unchecked") - Map<String, Object> kwargs = (Map<String, Object>) args[0]; - return new SkylarkClassObject(this, kwargs, loc); - } - }; - @SkylarkCallable( name = "default_provider", structField = true, - doc = "A provider that's provided by every rule, even if it's not returned explicitly. " - + "A <code>default_provider</code> accepts all special parameters that can be returned " - + "from rule implementation function in a struct, which are <code>runfiles</code>, " - + "<code>data_runfiles</code>, <code>default_runfiles</code>, " - + "<code>output_groups</code>, <code>instrumented_files</code>, and all " - + "<a href=\"skylark-provider.html\">providers</a> that are available on built-in rules. " - + "Each instance of the default provider contains the following standard fields: " - + "<code>data_runfiles</code>, <code>default_runfiles</code>, <code>files</code>, " - + "and <code>files_to_run</code>. The values of these fields are equivalent to the " - + "values of the corresponding fields of the target the default provider belongs to.") + doc = "Deprecated. Use <a href=\"globals.html#DefaultInfo\">DefaultInfo</a> instead.") public static ClassObjectConstructor getDefaultProvider() { - return DEFAULT_PROVIDER; + return DefaultProvider.SKYLARK_CONSTRUCTOR; } @SkylarkCallable(name = "created_actions", |