aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-04-11 17:55:55 +0000
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-04-12 11:49:05 +0200
commit3aa7d2f0548d4fda0df94722127245896c2b3ead (patch)
tree5c810f13cf6a77caa57dabb1bc2101acf7211b64 /src/main
parent350f63822c6f693e2742166c690ea013979ab896 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DefaultProvider.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/FileConfiguredTarget.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java17
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleContext.java24
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",