Assert that declared providers are not TransitiveInfoProviders.
Also fix the remaining violations.
RELNOTES: None.
PiperOrigin-RevId: 163391215
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 fb6fcf1..9b8be1f 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 @@
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 @@
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 @@
@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 6614c1a..4e0c62b 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.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 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 @@
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 @@
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 @@
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 2673fab..ec5a58f 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 @@
TransitiveInfoProviderMapBuilder aspectProviders = new TransitiveInfoProviderMapBuilder();
if (mergedOutputGroupProvider != null) {
- aspectProviders.add(mergedOutputGroupProvider);
+ aspectProviders.put(mergedOutputGroupProvider);
}
if (mergedExtraActionProviders != null) {
aspectProviders.add(mergedExtraActionProviders);
@@ -121,7 +121,7 @@
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 @@
}
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 ac96767..9557410 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 @@
*/
@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 @@
@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 c4afb4f..8216468 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 @@
}
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 38eb63d..f46689c 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 @@
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 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 8d44854..901b2e2 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 @@
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 @@
* 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 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 a554a39..73ac965 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 @@
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 @@
* 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 e151be7..292b2f0 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 @@
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 @@
* 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 26bf861..2f3a178 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 @@
.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 @@
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 d3e51a4..94a5dbf 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 @@
* 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 c464e57..ef1879c 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 @@
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 a41f065..79bbd99 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 @@
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 @@
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 83aa0fd..8b44e56 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 @@
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 f1952e8..f6d8e98 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 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 6d31017..47aeaaa 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 @@
.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 3b46af3..f1624d9 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 @@
.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 12ee7a3..e691a4f 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 @@
/** 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 705f324..1ab2094 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 @@
.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 96cd2a7..425ccea 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 @@
.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 dd78199..eee37b0 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 @@
// 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()) {