diff options
author | cparsons <cparsons@google.com> | 2018-08-07 14:20:20 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-07 14:22:11 -0700 |
commit | 075ab1e258902360bbd039d4b9fb4a6041a988d2 (patch) | |
tree | 0a008f43b97e61b3d16601921117aa36523faa53 /src/main/java/com/google/devtools/build/lib/rules | |
parent | df8ee192ca59dfd5b534f2268ea1cd62c48c4ab5 (diff) |
Migrate ObjcProvider to BuiltinProvider from NativeProvider
RELNOTES: None.
PiperOrigin-RevId: 207778688
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
3 files changed, 27 insertions, 4 deletions
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 83d02c1874..2b055fe1f7 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 @@ -31,6 +31,7 @@ import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTa import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; @@ -326,6 +327,7 @@ public class MultiArchBinarySupport { return avoidArtifacts.build(); } + @Deprecated // Use BuiltinProvider instead. private static <T extends Info> Iterable<T> getTypedProviders( Iterable<TransitiveInfoCollection> infoCollections, NativeProvider<T> providerClass) { @@ -335,6 +337,15 @@ public class MultiArchBinarySupport { .collect(ImmutableList.toImmutableList()); } + private static <T extends Info> Iterable<T> getTypedProviders( + Iterable<TransitiveInfoCollection> infoCollections, + BuiltinProvider<T> providerClass) { + return Streams.stream(infoCollections) + .filter(infoCollection -> infoCollection.get(providerClass) != null) + .map(infoCollection -> infoCollection.get(providerClass)) + .collect(ImmutableList.toImmutableList()); + } + private static <T extends TransitiveInfoProvider> Iterable<T> getTypedProviders( Iterable<TransitiveInfoCollection> infoCollections, Class<T> providerClass) { 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 6a31693cc4..998971d4e5 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 @@ -62,6 +62,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode; +import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.rules.apple.AppleToolchain; @@ -302,6 +303,7 @@ public final class ObjcCommon { return this; } + @Deprecated // Use the BuiltinProvider method instead. private <T extends Info> ImmutableList.Builder<T> addAnyProviders( ImmutableList.Builder<T> listBuilder, TransitiveInfoCollection collection, @@ -313,6 +315,16 @@ public final class ObjcCommon { return listBuilder; } + private <T extends Info> ImmutableList.Builder<T> addAnyProviders( + ImmutableList.Builder<T> listBuilder, + TransitiveInfoCollection collection, + BuiltinProvider<T> providerClass) { + T provider = collection.get(providerClass); + if (provider != null) { + listBuilder.add(provider); + } + return listBuilder; + } /** * Add providers which will be exposed both to the declaring rule and to any dependers on the diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java index d67064750b..b700620850 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java @@ -30,8 +30,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.NativeInfo; -import com.google.devtools.build.lib.packages.NativeProvider; import com.google.devtools.build.lib.packages.NativeProvider.WithLegacySkylarkName; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsStore; import com.google.devtools.build.lib.rules.cpp.CcLinkingInfo; @@ -661,7 +661,7 @@ public final class ObjcProvider extends NativeInfo implements ObjcProviderApi<Ar private final ImmutableMap<Key<?>, NestedSet<?>> strictDependencyItems; /** Skylark constructor and identifier for ObjcProvider. */ - public static final NativeProvider<ObjcProvider> SKYLARK_CONSTRUCTOR = new Constructor(); + public static final BuiltinProvider<ObjcProvider> SKYLARK_CONSTRUCTOR = new Constructor(); private ObjcProvider( SkylarkSemantics semantics, @@ -1124,10 +1124,10 @@ public final class ObjcProvider extends NativeInfo implements ObjcProviderApi<Ar } } - private static class Constructor extends NativeProvider<ObjcProvider> + private static class Constructor extends BuiltinProvider<ObjcProvider> implements WithLegacySkylarkName { public Constructor() { - super(ObjcProvider.class, ObjcProvider.SKYLARK_NAME); + super(ObjcProvider.SKYLARK_NAME, ObjcProvider.class); } @Override |