aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-07-27 23:48:56 +0200
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-07-28 10:44:54 +0200
commit11da2203a00bb8121275d9a110190d7f70df1073 (patch)
tree97a5aab8d40af86af9a7068c91c17d2fdca1201c /src/main/java/com/google/devtools/build
parentda4c959603280ded71ad8fbc2d30d4917b175750 (diff)
Assert that declared providers are not TransitiveInfoProviders.
Also fix the remaining violations. RELNOTES: None. PiperOrigin-RevId: 163391215
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAspect.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/MergedConfiguredTarget.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/OutputGroupProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetBuilder.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfoProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java2
21 files changed, 36 insertions, 59 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 fb6fcf1a43..9b8be1f250 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
@@ -161,7 +161,7 @@ public abstract class AbstractConfiguredTarget
LABEL_FIELD,
FILES_FIELD,
FilesToRunProvider.SKYLARK_NAME));
- if (getProvider(OutputGroupProvider.class) != null) {
+ if (get(OutputGroupProvider.SKYLARK_CONSTRUCTOR) != null) {
result.add(OutputGroupProvider.SKYLARK_NAME);
}
addExtraSkylarkKeys(result::add);
@@ -190,9 +190,6 @@ public abstract class AbstractConfiguredTarget
if (providerKey.equals(DefaultProvider.SKYLARK_CONSTRUCTOR.getKey())) {
return getDefaultProvider();
}
- if (providerKey.equals(OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey())) {
- return OutputGroupProvider.get(this);
- }
return rawGetSkylarkProvider(providerKey);
}
@@ -207,7 +204,7 @@ public abstract class AbstractConfiguredTarget
@Override
public final Object get(String providerKey) {
if (OutputGroupProvider.SKYLARK_NAME.equals(providerKey)) {
- return getProvider(OutputGroupProvider.class);
+ return get(OutputGroupProvider.SKYLARK_CONSTRUCTOR);
}
return rawGetSkylarkProvider(providerKey);
}
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 6614c1a8a2..4e0c62b3f1 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
@@ -29,13 +29,11 @@ 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.ClassObjectConstructor.Key;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.util.Preconditions;
import java.util.Arrays;
-import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
import javax.annotation.Nullable;
@@ -100,15 +98,12 @@ public final class ConfiguredAspect {
}
public SkylarkClassObject get(ClassObjectConstructor.Key key) {
- if (OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey().equals(key)) {
- return getProvider(OutputGroupProvider.class);
- }
return providers.getProvider(key);
}
public Object get(String legacyKey) {
if (OutputGroupProvider.SKYLARK_NAME.equals(legacyKey)) {
- return getProvider(OutputGroupProvider.class);
+ return get(OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey());
}
return providers.getProvider(legacyKey);
}
@@ -133,10 +128,6 @@ public final class ConfiguredAspect {
private final TransitiveInfoProviderMapBuilder providers =
new TransitiveInfoProviderMapBuilder();
private final Map<String, NestedSetBuilder<Artifact>> outputGroupBuilders = new TreeMap<>();
- private final ImmutableMap.Builder<String, Object> skylarkProviderBuilder =
- ImmutableMap.builder();
- private final LinkedHashMap<Key, SkylarkClassObject>
- skylarkDeclaredProvidersBuilder = new LinkedHashMap<>();
private final RuleContext ruleContext;
private final AspectDescriptor descriptor;
@@ -221,23 +212,18 @@ public final class ConfiguredAspect {
throw new EvalException(
constructor.getLocation(), "All providers must be top level values");
}
- ClassObjectConstructor.Key key = constructor.getKey();
- addDeclaredProvider(key, declaredProvider);
+ addDeclaredProvider(declaredProvider);
return this;
}
- private void addDeclaredProvider(Key key, SkylarkClassObject declaredProvider) {
- if (OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey().equals(key)) {
- addProvider(OutputGroupProvider.class, (OutputGroupProvider) declaredProvider);
- } else {
- providers.put(declaredProvider);
- }
+ private void addDeclaredProvider(SkylarkClassObject declaredProvider) {
+ providers.put(declaredProvider);
}
public Builder addNativeDeclaredProvider(SkylarkClassObject declaredProvider) {
ClassObjectConstructor constructor = declaredProvider.getConstructor();
Preconditions.checkState(constructor.isExported());
- addDeclaredProvider(constructor.getKey(), declaredProvider);
+ addDeclaredProvider(declaredProvider);
return this;
}
@@ -253,8 +239,7 @@ public final class ConfiguredAspect {
throw new IllegalStateException(
"OutputGroupProvider was provided explicitly; do not use addOutputGroup");
}
- addDeclaredProvider(OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey(),
- new OutputGroupProvider(outputGroups.build()));
+ addDeclaredProvider(new OutputGroupProvider(outputGroups.build()));
}
addProvider(
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 2673fab7a6..ec5a58fb3e 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
@@ -111,7 +111,7 @@ public final class MergedConfiguredTarget extends AbstractConfiguredTarget {
TransitiveInfoProviderMapBuilder aspectProviders = new TransitiveInfoProviderMapBuilder();
if (mergedOutputGroupProvider != null) {
- aspectProviders.add(mergedOutputGroupProvider);
+ aspectProviders.put(mergedOutputGroupProvider);
}
if (mergedExtraActionProviders != null) {
aspectProviders.add(mergedExtraActionProviders);
@@ -121,7 +121,7 @@ public final class MergedConfiguredTarget extends AbstractConfiguredTarget {
TransitiveInfoProviderMap providers = aspect.getProviders();
for (int i = 0; i < providers.getProviderCount(); ++i) {
Object providerKey = providers.getProviderKeyAt(i);
- if (OutputGroupProvider.class.equals(providerKey)
+ if (OutputGroupProvider.SKYLARK_CONSTRUCTOR.getKey().equals(providerKey)
|| ExtraActionArtifactsProvider.class.equals(providerKey)) {
continue;
}
@@ -163,7 +163,7 @@ public final class MergedConfiguredTarget extends AbstractConfiguredTarget {
}
for (ConfiguredAspect configuredAspect : aspects) {
- OutputGroupProvider aspectProvider = OutputGroupProvider.get(configuredAspect);;
+ OutputGroupProvider aspectProvider = OutputGroupProvider.get(configuredAspect);
if (aspectProvider == null) {
continue;
}
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 ac96767286..9557410dfc 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
@@ -58,7 +58,7 @@ import javax.annotation.Nullable;
*/
@Immutable
public final class OutputGroupProvider extends SkylarkClassObject
- implements TransitiveInfoProvider, SkylarkIndexable, Iterable<String> {
+ implements SkylarkIndexable, Iterable<String> {
public static final String SKYLARK_NAME = "output_groups";
public static NativeClassObjectConstructor<OutputGroupProvider> SKYLARK_CONSTRUCTOR =
@@ -128,7 +128,7 @@ public final class OutputGroupProvider extends SkylarkClassObject
@Nullable
public static OutputGroupProvider get(TransitiveInfoCollection collection) {
- return collection.getProvider(OutputGroupProvider.class);
+ return collection.get(OutputGroupProvider.SKYLARK_CONSTRUCTOR);
}
@Nullable
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 c4afb4f546..821646843a 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
@@ -128,7 +128,7 @@ public final class RuleConfiguredTargetBuilder {
}
OutputGroupProvider outputGroupProvider = new OutputGroupProvider(outputGroups.build());
- addProvider(OutputGroupProvider.class, outputGroupProvider);
+ addNativeDeclaredProvider(outputGroupProvider);
}
TransitiveInfoProviderMap providers = providersBuilder.build();
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 38eb63d767..f46689c247 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
@@ -48,6 +48,10 @@ 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);
+
// TODO(arielb): throw an exception if the providerClass is already present?
// This is enforced by aspects but RuleConfiguredTarget presents violations
// particularly around LicensesProvider
@@ -57,6 +61,10 @@ public class TransitiveInfoProviderMapBuilder {
public TransitiveInfoProviderMapBuilder put(SkylarkClassObject classObject) {
Preconditions.checkNotNull(classObject);
+ Preconditions.checkState(!(classObject instanceof TransitiveInfoProvider),
+ "Declared provider %s should not implement TransitiveInfoProvider",
+ classObject.getClass());
+
providers.put(classObject.getConstructor().getKey(), classObject);
return this;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java
index 8d44854a39..901b2e2dde 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeviceScriptFixtureInfoProvider.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
@@ -26,12 +25,11 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* android_instrumentation_test}.
*/
@Immutable
-public class AndroidDeviceScriptFixtureInfoProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public class AndroidDeviceScriptFixtureInfoProvider extends SkylarkClassObject {
private static final String SKYLARK_NAME = "DeviceScriptFixtureInfo";
public static final NativeClassObjectConstructor<AndroidDeviceScriptFixtureInfoProvider>
- ANDROID_DEVICE_SCRIPT_FIXTURE_INFO =
+ SKYLARK_CONSTRUCTOR =
new NativeClassObjectConstructor<AndroidDeviceScriptFixtureInfoProvider>(
AndroidDeviceScriptFixtureInfoProvider.class, SKYLARK_NAME) {};
@@ -42,7 +40,7 @@ public class AndroidDeviceScriptFixtureInfoProvider extends SkylarkClassObject
public AndroidDeviceScriptFixtureInfoProvider(
Artifact fixtureScript, NestedSet<Artifact> supportApks, boolean daemon, boolean strictExit) {
- super(ANDROID_DEVICE_SCRIPT_FIXTURE_INFO, ImmutableMap.<String, Object>of());
+ super(SKYLARK_CONSTRUCTOR, ImmutableMap.<String, Object>of());
this.fixtureScript = fixtureScript;
this.supportApks = supportApks;
this.daemon = daemon;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java
index a554a39b3d..73ac9650e1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidHostServiceFixtureInfoProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
@@ -27,8 +26,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* android_instrumentation_test}.
*/
@Immutable
-public class AndroidHostServiceFixtureInfoProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public class AndroidHostServiceFixtureInfoProvider extends SkylarkClassObject {
private static final String SKYLARK_NAME = "HostServiceFixtureInfo";
static final NativeClassObjectConstructor<AndroidHostServiceFixtureInfoProvider>
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfoProvider.java
index e151be796b..292b2f04ee 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationInfoProvider.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.rules.android;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -25,8 +24,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* AndroidInstrumentationTest}.
*/
@Immutable
-public class AndroidInstrumentationInfoProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public class AndroidInstrumentationInfoProvider extends SkylarkClassObject {
private static final String SKYLARK_NAME = "AndroidInstrumentationInfo";
static final NativeClassObjectConstructor<AndroidInstrumentationInfoProvider>
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java
index 26bf861d9a..2f3a178ac3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java
@@ -208,7 +208,7 @@ public class AndroidInstrumentationTest implements RuleConfiguredTargetFactory {
.addTransitive(AndroidCommon.getSupportApks(ruleContext));
for (AndroidDeviceScriptFixtureInfoProvider fixture :
ruleContext.getPrerequisites(
- "fixtures", Mode.TARGET, AndroidDeviceScriptFixtureInfoProvider.class)) {
+ "fixtures", Mode.TARGET, AndroidDeviceScriptFixtureInfoProvider.SKYLARK_CONSTRUCTOR)) {
allSupportApks.addTransitive(fixture.getSupportApks());
}
for (AndroidHostServiceFixtureInfoProvider fixture :
@@ -281,7 +281,7 @@ public class AndroidInstrumentationTest implements RuleConfiguredTargetFactory {
return ruleContext.getPrerequisites(
"fixtures",
Mode.TARGET,
- AndroidDeviceScriptFixtureInfoProvider.ANDROID_DEVICE_SCRIPT_FIXTURE_INFO);
+ AndroidDeviceScriptFixtureInfoProvider.SKYLARK_CONSTRUCTOR);
}
private static String getDeviceBrokerType(RuleContext ruleContext) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
index d3e51a418b..94a5dbfb26 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java
@@ -684,7 +684,7 @@ public final class CcCommon {
* toolchain.
*/
public static String computeCcFlags(RuleContext ruleContext, TransitiveInfoCollection toolchain) {
- CcToolchainProvider toolchainProvider = toolchain.getProvider(CcToolchainProvider.class);
+ CcToolchainProvider toolchainProvider = toolchain.get(CcToolchainProvider.SKYLARK_CONSTRUCTOR);
FeatureConfiguration featureConfiguration =
CcCommon.configureFeatures(ruleContext, toolchainProvider);
if (!featureConfiguration.actionIsConfigured(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
index c464e57692..ef1879c8c2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchain.java
@@ -386,7 +386,6 @@ public class CcToolchain implements RuleConfiguredTargetFactory {
RuleConfiguredTargetBuilder builder =
new RuleConfiguredTargetBuilder(ruleContext)
- .addProvider(ccProvider)
.addNativeDeclaredProvider(ccProvider)
.addNativeDeclaredProvider(makeVariableProvider)
.addProvider(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
index a41f06577f..79bbd99e86 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.cpp;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
@@ -40,8 +39,7 @@ import javax.annotation.Nullable;
doc = "Information about the C++ compiler being used."
)
@Immutable
-public final class CcToolchainProvider
- extends SkylarkClassObject implements TransitiveInfoProvider {
+public final class CcToolchainProvider extends SkylarkClassObject {
public static final String SKYLARK_NAME = "CcToolchainInfo";
public static final NativeClassObjectConstructor<CcToolchainProvider> SKYLARK_CONSTRUCTOR =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java
index 83aa0fd8dc..8b44e561bf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSuite.java
@@ -36,7 +36,7 @@ public class CcToolchainSuite implements RuleConfiguredTargetFactory {
throws InterruptedException, RuleErrorException {
NestedSetBuilder<Artifact> filesToBuild = NestedSetBuilder.stableOrder();
for (TransitiveInfoCollection dep : ruleContext.getPrerequisiteMap("toolchains").values()) {
- CcToolchainProvider provider = dep.getProvider(CcToolchainProvider.class);
+ CcToolchainProvider provider = dep.get(CcToolchainProvider.SKYLARK_CONSTRUCTOR);
if (provider != null) {
filesToBuild.addTransitive(provider.getCrosstool());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
index f1952e897d..f6d8e98893 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java
@@ -313,11 +313,11 @@ public class CppHelper {
public static CcToolchainProvider getToolchain(RuleContext ruleContext,
TransitiveInfoCollection dep) {
// TODO(bazel-team): Consider checking this generally at the attribute level.
- if ((dep == null) || (dep.getProvider(CcToolchainProvider.class) == null)) {
+ if ((dep == null) || (dep.get(CcToolchainProvider.SKYLARK_CONSTRUCTOR) == null)) {
ruleContext.ruleError("The selected C++ toolchain is not a cc_toolchain rule");
return CcToolchainProvider.EMPTY_TOOLCHAIN_IS_ERROR;
}
- return dep.getProvider(CcToolchainProvider.class);
+ return dep.get(CcToolchainProvider.SKYLARK_CONSTRUCTOR);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
index 6d31017676..47aeaaacb6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java
@@ -166,7 +166,6 @@ public class JavaImport implements RuleConfiguredTargetFactory {
.addSkylarkTransitiveInfo(
JavaSkylarkApiProvider.NAME, JavaSkylarkApiProvider.fromRuleContext())
.addNativeDeclaredProvider(javaProvider)
- .addProvider(JavaProvider.class, javaProvider)
.add(JavaRuleOutputJarsProvider.class, ruleOutputJarsProvider)
.add(
JavaRuntimeJarProvider.class,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
index 3b46af3a1d..f1624d9e0a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaLibrary.java
@@ -248,7 +248,6 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
.addProvider(pluginInfoProvider)
.addProvider(new ProguardSpecProvider(proguardSpecs))
.addProvider(sourceJarsProvider)
- .addProvider(javaProvider)
.addNativeDeclaredProvider(javaProvider)
.addOutputGroup(JavaSemantics.SOURCE_JARS_OUTPUT_GROUP, transitiveSourceJars)
.addOutputGroup(OutputGroupProvider.HIDDEN_TOP_LEVEL, proguardSpecs);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
index 12ee7a3528..e691a4f1ce 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaProvider.java
@@ -34,7 +34,7 @@ import javax.annotation.Nullable;
/** A Skylark declared provider that encapsulates all providers that are needed by Java rules. */
@Immutable
-public final class JavaProvider extends SkylarkClassObject implements TransitiveInfoProvider {
+public final class JavaProvider extends SkylarkClassObject {
public static final NativeClassObjectConstructor<JavaProvider> JAVA_PROVIDER =
new NativeClassObjectConstructor<JavaProvider>(JavaProvider.class, "java_common.provider") {};
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
index 705f324584..1ab20943cd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaLiteProtoLibrary.java
@@ -110,7 +110,6 @@ public class JavaLiteProtoLibrary implements RuleConfiguredTargetFactory {
.addProvider(javaRunfilesProvider)
.addProvider(getJavaLiteRuntimeSpec(ruleContext))
.addProvider(JavaRuleOutputJarsProvider.EMPTY)
- .addProvider(javaProvider)
.addNativeDeclaredProvider(javaProvider)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
index 96cd2a71d8..425ccea91b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/proto/JavaProtoLibrary.java
@@ -100,7 +100,6 @@ public class JavaProtoLibrary implements RuleConfiguredTargetFactory {
.addProvider(sourceJarsProvider)
.addProvider(javaRunfilesProvider)
.addProvider(JavaRuleOutputJarsProvider.EMPTY)
- .addProvider(javaProvider)
.addNativeDeclaredProvider(javaProvider)
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
index dd78199c83..eee37b0089 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java
@@ -56,7 +56,7 @@ public class MultiArchBinarySupport {
// this attribute. b/28403953 tracks cc toolchain usage.
ImmutableListMultimap<BuildConfiguration, CcToolchainProvider> configToProvider =
ruleContext.getPrerequisitesByConfiguration(
- ObjcRuleClasses.CHILD_CONFIG_ATTR, Mode.SPLIT, CcToolchainProvider.class);
+ ObjcRuleClasses.CHILD_CONFIG_ATTR, Mode.SPLIT, CcToolchainProvider.SKYLARK_CONSTRUCTOR);
ImmutableMap.Builder<BuildConfiguration, CcToolchainProvider> result = ImmutableMap.builder();
for (BuildConfiguration config : configToProvider.keySet()) {