aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-07-12 14:59:07 +0200
committerGravatar László Csomor <laszlocsomor@google.com>2017-07-12 16:03:11 +0200
commit4e9fa1947c838882befd94f95233275e68be82f1 (patch)
tree93cf377d0e0f8dcd18e77bf74dd215c9cd445adf /src/main/java/com/google/devtools/build/lib
parent425f2496d65d1e190f633236575009e49e1252b3 (diff)
Make native declared providers not implement TransitiveInfoCollection.
(Almost) all native declared providers are accessed as such and not as native non-declared providers (inheritors of TransitiveInfoCollaction). There are still three providers that use TransitiveInfoCollection.WithLegacySkylarkName mechanism, I'll address them in the follow-up CL. RELNOTES: None. PiperOrigin-RevId: 161655315
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidInstrumentationTest.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaImport.java2
-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/objc/AppleBinary.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java4
26 files changed, 54 insertions, 65 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index a27427a9e0..8987fedbd8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -60,7 +60,6 @@ import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
-import com.google.devtools.build.lib.packages.ClassObjectConstructor;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy;
import com.google.devtools.build.lib.packages.FileTarget;
import com.google.devtools.build.lib.packages.FilesetEntry;
@@ -820,6 +819,28 @@ public final class RuleContext extends TargetContext
}
/**
+ * For a given attribute, returns all declared provider provided by targets
+ * of that attribute. Each declared provider is keyed by the
+ * {@link BuildConfiguration} under which the provider was created.
+ */
+ public <C extends SkylarkClassObject> ImmutableListMultimap<BuildConfiguration, C>
+ getPrerequisitesByConfiguration(String attributeName, Mode mode,
+ final NativeClassObjectConstructor<C> provider) {
+ List<? extends TransitiveInfoCollection> transitiveInfoCollections =
+ getPrerequisites(attributeName, mode);
+
+ ImmutableListMultimap.Builder<BuildConfiguration, C> result =
+ ImmutableListMultimap.builder();
+ for (TransitiveInfoCollection prerequisite : transitiveInfoCollections) {
+ C prerequisiteProvider = prerequisite.get(provider);
+ if (prerequisiteProvider != null) {
+ result.put(prerequisite.getConfiguration(), prerequisiteProvider);
+ }
+ }
+ return result.build();
+ }
+
+ /**
* For a given attribute, returns all {@link TransitiveInfoCollection}s provided by targets
* of that attribute. Each {@link TransitiveInfoCollection} is keyed by the
* {@link BuildConfiguration} under which the collection was created.
@@ -862,8 +883,8 @@ public final class RuleContext extends TargetContext
* TransitiveInfoCollection under the specified attribute.
*/
@Nullable
- public SkylarkClassObject getPrerequisite(
- String attributeName, Mode mode, final ClassObjectConstructor.Key skylarkKey) {
+ public <T extends SkylarkClassObject> T getPrerequisite(
+ String attributeName, Mode mode, final NativeClassObjectConstructor<T> skylarkKey) {
TransitiveInfoCollection prerequisite = getPrerequisite(attributeName, mode);
return prerequisite == null ? null : prerequisite.get(skylarkKey);
}
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 92a9cdd538..26bf861d9a 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
@@ -317,9 +317,8 @@ public class AndroidInstrumentationTest implements RuleConfiguredTargetFactory {
*/
private static ExecutionInfoProvider getExecutionInfoProvider(RuleContext ruleContext) {
ExecutionInfoProvider executionInfoProvider =
- (ExecutionInfoProvider)
ruleContext.getPrerequisite(
- "target_device", Mode.HOST, ExecutionInfoProvider.SKYLARK_CONSTRUCTOR.getKey());
+ "target_device", Mode.HOST, ExecutionInfoProvider.SKYLARK_CONSTRUCTOR);
ImmutableMap<String, String> executionRequirements =
(executionInfoProvider != null)
? executionInfoProvider.getExecutionInfo()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
index 0e872c5e74..da22fa547e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/apple/XcodeVersionProperties.java
@@ -18,7 +18,6 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableMap;
-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;
@@ -27,7 +26,7 @@ import javax.annotation.Nullable;
/** A tuple containing information about a version of xcode and its properties. */
@Immutable
-public class XcodeVersionProperties extends SkylarkClassObject implements TransitiveInfoProvider {
+public class XcodeVersionProperties extends SkylarkClassObject {
/** Skylark name for the XcodeVersionProperties provider. */
public static final String SKYLARK_NAME = "XcodeProperties";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
index 2618fee2d8..7b7230c27b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java
@@ -1083,7 +1083,7 @@ public final class CcLibraryHelper {
new CcSpecificLinkParamsProvider(
createCcLinkParamsStore(ccLinkingOutputs, cppCompilationContext, forcePic)));
} else {
- providers.add(
+ providers.put(
new CcLinkParamsProvider(
createCcLinkParamsStore(ccLinkingOutputs, cppCompilationContext, forcePic)));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
index 4b9fcd7e8e..83d539d1e9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParams.java
@@ -205,7 +205,7 @@ public final class CcLinkParams {
* the method does not do anything.
*/
public Builder addTransitiveTarget(TransitiveInfoCollection target) {
- return addTransitiveProvider(target.getProvider(CcLinkParamsProvider.class));
+ return addTransitiveProvider(target.get(CcLinkParamsProvider.CC_LINK_PARAMS));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java
index 1ed8d6f169..cc6d68adf1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkParamsProvider.java
@@ -17,7 +17,6 @@ package com.google.devtools.build.lib.rules.cpp;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
-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,22 +24,14 @@ import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore.CcLinkParamsSto
/** A target that provides C linker parameters. */
@Immutable
-public final class CcLinkParamsProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class CcLinkParamsProvider extends SkylarkClassObject {
public static final NativeClassObjectConstructor<CcLinkParamsProvider> CC_LINK_PARAMS =
new NativeClassObjectConstructor<CcLinkParamsProvider>(
CcLinkParamsProvider.class, "link_params") {};
public static final Function<TransitiveInfoCollection, CcLinkParamsStore> TO_LINK_PARAMS =
input -> {
-
- // Try native first...
- CcLinkParamsProvider provider = input.getProvider(CcLinkParamsProvider.class);
- if (provider != null) {
- return provider.getCcLinkParamsStore();
- }
-
// ... then try Skylark.
- provider = input.get(CC_LINK_PARAMS);
+ CcLinkParamsProvider provider = input.get(CC_LINK_PARAMS);
if (provider != null) {
return provider.getCcLinkParamsStore();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
index cd5f64282b..b540dee5f8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcSkylarkApiProvider.java
@@ -60,7 +60,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
+ "(possibly empty but never None)")
public NestedSet<Artifact> getLibraries() {
NestedSetBuilder<Artifact> libs = NestedSetBuilder.linkOrder();
- CcLinkParamsProvider ccLinkParams = getInfo().getProvider(CcLinkParamsProvider.class);
+ CcLinkParamsProvider ccLinkParams = getInfo().get(CcLinkParamsProvider.CC_LINK_PARAMS);
if (ccLinkParams == null) {
return libs.build();
}
@@ -78,7 +78,7 @@ public final class CcSkylarkApiProvider extends SkylarkApiProvider {
+ "FULLY STATIC mode (linkopts=[\"-static\"]) or MOSTLY STATIC mode (linkstatic=1) "
+ "(possibly empty but never None)")
public ImmutableList<String> getLinkopts() {
- CcLinkParamsProvider ccLinkParams = getInfo().getProvider(CcLinkParamsProvider.class);
+ CcLinkParamsProvider ccLinkParams = getInfo().get(CcLinkParamsProvider.CC_LINK_PARAMS);
if (ccLinkParams == null) {
return ImmutableList.of();
}
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 5fd09b5ca9..6d31017676 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
@@ -173,7 +173,7 @@ public class JavaImport implements RuleConfiguredTargetFactory {
new JavaRuntimeJarProvider(javaArtifacts.getRuntimeJars()))
.add(JavaNeverlinkInfoProvider.class, new JavaNeverlinkInfoProvider(neverLink))
.add(RunfilesProvider.class, RunfilesProvider.simple(runfiles))
- .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore))
+ .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore))
.add(JavaCompilationArgsProvider.class, compilationArgsProvider)
.add(
JavaNativeLibraryProvider.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 28255ccff2..f31cfcaec0 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
@@ -227,7 +227,6 @@ public class JavaLibrary implements RuleConfiguredTargetFactory {
.addProvider(new JavaNeverlinkInfoProvider(neverLink))
.addProvider(transitiveCppDeps)
.addProvider(JavaCompilationArgsProvider.class, compilationArgsProvider)
- .addProvider(ccLinkParamsProvider)
.addNativeDeclaredProvider(ccLinkParamsProvider)
.addProvider(new JavaNativeLibraryProvider(transitiveJavaNativeLibraries))
.addProvider(JavaSourceInfoProvider.fromJavaTargetAttributes(attributes, semantics))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
index 6bbfc3bbac..d296905dfc 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java
@@ -239,9 +239,9 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
extraLinkArgs.add("-Xlinker", "-rpath", "-Xlinker", "@loader_path/Frameworks");
if (didProvideBundleLoader) {
AppleExecutableBinaryProvider executableProvider =
- (AppleExecutableBinaryProvider) ruleContext.getPrerequisite(
+ ruleContext.getPrerequisite(
BUNDLE_LOADER_ATTR_NAME, Mode.TARGET,
- AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR.getKey());
+ AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR);
extraLinkArgs.add(
"-bundle_loader", executableProvider.getAppleExecutableBinary().getExecPathString());
}
@@ -290,9 +290,9 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
private static Iterable<Artifact> getExtraLinkInputs(RuleContext ruleContext) {
AppleExecutableBinaryProvider executableProvider =
- (AppleExecutableBinaryProvider) ruleContext.getPrerequisite(
+ ruleContext.getPrerequisite(
BUNDLE_LOADER_ATTR_NAME, Mode.TARGET,
- AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR.getKey());
+ AppleExecutableBinaryProvider.SKYLARK_CONSTRUCTOR);
if (executableProvider != null) {
return ImmutableSet.<Artifact>of(executableProvider.getAppleExecutableBinary());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
index 10ff0d389d..650e1eeb76 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDebugOutputsProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Maps;
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;
@@ -38,8 +37,7 @@ import java.util.Map.Entry;
* <p>Example: { "arm64": { "bitcode_symbols": Artifact, "dsym_binary": Artifact } }
*/
@Immutable
-public final class AppleDebugOutputsProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class AppleDebugOutputsProvider extends SkylarkClassObject {
/** Expected types of debug outputs. */
enum OutputType {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java
index 7afae2ef62..97adf8208e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDylibBinaryProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
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.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -30,8 +29,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* avoid relinking symbols included in the dylib</li>
* </ul>
*/
-public final class AppleDylibBinaryProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class AppleDylibBinaryProvider extends SkylarkClassObject {
/** Skylark name for the AppleDylibBinaryProvider. */
public static final String SKYLARK_NAME = "AppleDylibBinary";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java
index 2ab05d6dac..e17e7f2344 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleDynamicFrameworkProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
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.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -36,8 +35,7 @@ import javax.annotation.Nullable;
* executable may avoid relinking symbols included in the loadable binary</li>
* </ul>
*/
-public final class AppleDynamicFrameworkProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class AppleDynamicFrameworkProvider extends SkylarkClassObject {
/** Skylark name for the AppleDynamicFrameworkProvider. */
public static final String SKYLARK_NAME = "AppleDynamicFramework";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java
index 347b1111d3..7b072bd136 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleExecutableBinaryProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
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.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -30,8 +29,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* executable may avoid relinking symbols included in the loadable binary</li>
* </ul>
*/
-public final class AppleExecutableBinaryProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class AppleExecutableBinaryProvider extends SkylarkClassObject {
/** Skylark name for the AppleExecutableBinaryProvider. */
public static final String SKYLARK_NAME = "AppleExecutableBinary";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java
index cd014bcf43..c276dc7e63 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleLoadableBundleBinaryProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
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.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -27,8 +26,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* <li>'binary': The binary artifact output by apple_binary</li>
* </ul>
*/
-public final class AppleLoadableBundleBinaryProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class AppleLoadableBundleBinaryProvider extends SkylarkClassObject {
/** Skylark name for the AppleLoadableBundleBinary. */
public static final String SKYLARK_NAME = "AppleLoadableBundleBinary";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
index 2e0fa615bf..49575aa0de 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java
@@ -84,7 +84,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
Mode.SPLIT, ObjcProvider.class);
ImmutableListMultimap<BuildConfiguration, CcLinkParamsProvider> configToCcAvoidDepsMap =
ruleContext.getPrerequisitesByConfiguration(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME,
- Mode.SPLIT, CcLinkParamsProvider.class);
+ Mode.SPLIT, CcLinkParamsProvider.CC_LINK_PARAMS);
Iterable<ObjcProtoProvider> avoidProtoProviders =
ruleContext.getPrerequisites(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME, Mode.TARGET,
ObjcProtoProvider.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java
index 6cb613f973..f18a9b476e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
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.packages.NativeClassObjectConstructor;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
@@ -31,8 +30,7 @@ import com.google.devtools.build.lib.packages.SkylarkClassObject;
* symbols included in this archive multiple times).</li>
* </ul>
*/
-public final class AppleStaticLibraryProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class AppleStaticLibraryProvider extends SkylarkClassObject {
/** Skylark name for the AppleStaticLibraryProvider. */
public static final String SKYLARK_NAME = "AppleStaticLibrary";
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java
index 3228825ce1..2a0a2142da 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java
@@ -43,11 +43,10 @@ public final class IosDevice implements RuleConfiguredTargetFactory {
String iosVersionAttribute =
context.attributes().get(IosDeviceRule.IOS_VERSION_ATTR_NAME, STRING);
XcodeVersionProperties xcodeVersionProperties =
- (XcodeVersionProperties)
context.getPrerequisite(
IosDeviceRule.XCODE_ATTR_NAME,
Mode.TARGET,
- XcodeVersionProperties.SKYLARK_CONSTRUCTOR.getKey());
+ XcodeVersionProperties.SKYLARK_CONSTRUCTOR);
DottedVersion xcodeVersion = null;
if (xcodeVersionProperties != null && xcodeVersionProperties.getXcodeVersion().isPresent()) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
index d22fdca486..1128ae8acb 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDeviceProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.objc;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction.Substitution;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
@@ -28,7 +27,7 @@ import javax.annotation.Nullable;
/** Provider that describes a simulator device. */
@Immutable
-public final class IosDeviceProvider extends SkylarkClassObject implements TransitiveInfoProvider {
+public final class IosDeviceProvider extends SkylarkClassObject {
/** A builder of {@link IosDeviceProvider}s. */
public static final class Builder {
private String type;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
index bb284155bd..443144b571 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java
@@ -260,7 +260,7 @@ public final class ObjcCommon {
addAnyProviders(propagatedObjcDeps, dep, ObjcProvider.class);
addAnyProviders(cppDeps, dep, CppCompilationContext.class);
if (isCcLibrary(dep)) {
- cppDepLinkParams.add(dep.getProvider(CcLinkParamsProvider.class));
+ cppDepLinkParams.add(dep.get(CcLinkParamsProvider.CC_LINK_PARAMS));
addDefines(dep.getProvider(CppCompilationContext.class).getDefines());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
index e0b7341dbe..b1db0b322b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java
@@ -95,8 +95,7 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
.addProvider(
InstrumentedFilesProvider.class,
compilationSupport.getInstrumentedFilesProvider(common))
- .addProvider(
- CcLinkParamsProvider.class,
+ .addNativeDeclaredProvider(
new CcLinkParamsProvider(new ObjcLibraryCcLinkParamsStore(common)))
.addOutputGroups(outputGroupCollector)
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
index b11c77eadb..47f5a3031c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/TestSupport.java
@@ -257,9 +257,8 @@ public class TestSupport {
*/
public Iterable<SkylarkClassObject> getExtraProviders() {
IosDeviceProvider deviceProvider =
- (IosDeviceProvider)
- ruleContext.getPrerequisite(
- IosTest.TARGET_DEVICE, Mode.TARGET, IosDeviceProvider.SKYLARK_CONSTRUCTOR.getKey());
+ ruleContext.getPrerequisite(
+ IosTest.TARGET_DEVICE, Mode.TARGET, IosDeviceProvider.SKYLARK_CONSTRUCTOR);
DottedVersion xcodeVersion = deviceProvider.getXcodeVersion();
AppleConfiguration configuration = ruleContext.getFragment(AppleConfiguration.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
index ab6df63379..fd659781cf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyBinary.java
@@ -118,7 +118,7 @@ public abstract class PyBinary implements RuleConfiguredTargetFactory {
.setFilesToBuild(common.getFilesToBuild())
.add(RunfilesProvider.class, runfilesProvider)
.setRunfilesSupport(runfilesSupport, common.getExecutable())
- .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore))
+ .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore))
.add(PythonImportsProvider.class, new PythonImportsProvider(imports));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java
index 8d20b9657b..5a3d535a30 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyLibrary.java
@@ -92,7 +92,7 @@ public abstract class PyLibrary implements RuleConfiguredTargetFactory {
return builder
.setFilesToBuild(filesToBuild)
.add(RunfilesProvider.class, RunfilesProvider.simple(runfilesBuilder.build()))
- .add(CcLinkParamsProvider.class, new CcLinkParamsProvider(ccLinkParamsStore))
+ .addNativeDeclaredProvider(new CcLinkParamsProvider(ccLinkParamsStore))
.add(PythonImportsProvider.class, new PythonImportsProvider(imports))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java b/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java
index 4f17ec199c..32cabb0e2d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/ExecutionInfoProvider.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.test;
import com.google.common.collect.ImmutableMap;
-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 java.util.Map;
* tests).
*/
@Immutable
-public final class ExecutionInfoProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class ExecutionInfoProvider extends SkylarkClassObject {
/** Skylark constructor and identifier for ExecutionInfoProvider. */
public static final NativeClassObjectConstructor<ExecutionInfoProvider> SKYLARK_CONSTRUCTOR =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java b/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java
index 240738dde5..fe52a230a0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/test/TestEnvironmentProvider.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.rules.test;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
-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;
@@ -24,8 +23,7 @@ import java.util.Map;
/** Provider containing any additional environment variables for use in the test action. */
@Immutable
-public final class TestEnvironmentProvider extends SkylarkClassObject
- implements TransitiveInfoProvider {
+public final class TestEnvironmentProvider extends SkylarkClassObject {
/** Skylark constructor and identifier for TestEnvironmentProvider. */
public static final NativeClassObjectConstructor<TestEnvironmentProvider> SKYLARK_CONSTRUCTOR =