aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-05-02 18:43:46 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-03 10:56:17 +0200
commite788964a6ebc2c4966456ac74044f4f44a126fe5 (patch)
treea2713247b9dcea7308aafa6235468f415f1696ed /src/main/java/com/google/devtools/build
parent5e924aff704b68f5b02c47672e4ac217c7376cf2 (diff)
Remove superpowers from default provider.
RELNOTES: 'output_groups' and 'instrumented_files' cannot be specified in DefaultInfo. PiperOrigin-RevId: 154842022
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java6
2 files changed, 16 insertions, 13 deletions
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 733f331e54..25c38d7a2d 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
@@ -196,16 +196,19 @@ public class SkylarkRuleClassFunctions {
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>files</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."
+ + "A <code>DefaultInfo</code> accepts the following parameters:"
+ + "<li><code>files</code></li>"
+ + "<ul><li><code>runfiles</code></li>"
+ + "<li><code>data_runfiles</code></li>"
+ + "<li><code>default_runfiles</code></li>"
+ + "</ul>"
+ + "Each instance of the default provider contains the following standard "
+ + "fields: "
+ + "<li><code>files</code></li>"
+ + "<li><code>files_to_run</code></li>"
+ + "<ul><li><code>data_runfiles</code></li>"
+ + "<li><code>default_runfiles</code></li>"
+ + "</ul>"
)
private static final ClassObjectConstructor defaultInfo = DefaultProvider.SKYLARK_CONSTRUCTOR;
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 f6900a2e70..350c4e00e2 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
@@ -306,9 +306,9 @@ public final class SkylarkRuleConfiguredTargetBuilder {
dataRunfiles = cast("data_runfiles", provider, Runfiles.class, loc);
} else if (key.equals("default_runfiles")) {
defaultRunfiles = cast("default_runfiles", provider, Runfiles.class, loc);
- } else if (key.equals("output_groups")) {
+ } else if (key.equals("output_groups") && !isDefaultProvider) {
addOutputGroups(provider.getValue(key), loc, builder);
- } else if (key.equals("instrumented_files")) {
+ } else if (key.equals("instrumented_files") && !isDefaultProvider) {
SkylarkClassObject insStruct =
cast("instrumented_files", provider, SkylarkClassObject.class, loc);
Location insLoc = insStruct.getCreationLoc();
@@ -348,7 +348,7 @@ public final class SkylarkRuleConfiguredTargetBuilder {
InstrumentedFilesCollector.NO_METADATA_COLLECTOR,
Collections.<Artifact>emptySet());
builder.addProvider(InstrumentedFilesProvider.class, instrumentedFilesProvider);
- } else if (registeredProviderTypes.containsKey(key)) {
+ } else if (registeredProviderTypes.containsKey(key) && !isDefaultProvider) {
Class<? extends TransitiveInfoProvider> providerType = registeredProviderTypes.get(key);
TransitiveInfoProvider providerField = cast(key, provider, providerType, loc);
builder.addProvider(providerType, providerField);