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
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 a27427a..8987fed 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.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 @@ } /** + * 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 @@ * 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 92a9cdd..26bf861 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 @@ */ 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 0e872c5..da22fa5 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.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 @@ /** 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 2618fee..7b7230c 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 @@ 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 4b9fcd7..83d539d 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 @@ * 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 1ed8d6f..cc6d68a 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 @@ 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 @@ /** 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 cd5f642..b540dee 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 @@ + "(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 @@ + "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 5fd09b5..6d31017 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 @@ 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 28255cc..f31cfca 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 @@ .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 6bbfc3b..d296905 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 @@ 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 @@ 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 10ff0d3..650e1ee 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 @@ 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 @@ * <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 7afae2e..97adf82 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 @@ 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 @@ * 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 2ab05d6..e17e7f2 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 @@ 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 @@ * 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 347b111..7b072bd 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 @@ 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 @@ * 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 cd014bc..c276dc7 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 @@ 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 @@ * <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 2e0fa61..49575aa 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 @@ 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 6cb613f..f18a9b4 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 @@ 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 @@ * 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 3228825..2a0a214 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 @@ 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 d22fdca..1128ae8 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 @@ 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 @@ /** 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 bb28415..443144b 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 @@ 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 e0b7341..b1db0b3 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 @@ .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 b11c77e..47f5a30 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 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 ab6df63..fd65978 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 @@ .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 8d20b96..5a3d535 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 @@ 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 4f17ec1..32cabb0 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 @@ * 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 240738d..fe52a23 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 @@ 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 @@ /** 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 =
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index e258d4e..4b9da3a 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -209,7 +209,7 @@ ConfiguredTarget hello = getConfiguredTarget("//hello:hello"); assertThat( hello - .getProvider(CcLinkParamsProvider.class) + .get(CcLinkParamsProvider.CC_LINK_PARAMS) .getCcLinkParams(false, false) .getLinkopts() .isEmpty()) @@ -1131,7 +1131,7 @@ Iterable<Artifact> libraries = LinkerInputs.toNonSolibArtifacts( target - .getProvider(CcLinkParamsProvider.class) + .get(CcLinkParamsProvider.CC_LINK_PARAMS) .getCcLinkParams(true, true) .getLibraries()); assertThat(artifactsToStrings(libraries)).contains("bin a/libfoo.a"); @@ -1146,7 +1146,7 @@ Iterable<Artifact> libraries = LinkerInputs.toNonSolibArtifacts( target - .getProvider(CcLinkParamsProvider.class) + .get(CcLinkParamsProvider.CC_LINK_PARAMS) .getCcLinkParams(true, true) .getLibraries()); assertThat(artifactsToStrings(libraries)).doesNotContain("bin a/libfoo.a"); @@ -1162,7 +1162,7 @@ Iterable<Artifact> libraries = LinkerInputs.toNonSolibArtifacts( target - .getProvider(CcLinkParamsProvider.class) + .get(CcLinkParamsProvider.CC_LINK_PARAMS) .getCcLinkParams(true, true) .getLibraries()); assertThat(artifactsToStrings(libraries)).doesNotContain("src a/libfoo.so");