From 075ab1e258902360bbd039d4b9fb4a6041a988d2 Mon Sep 17 00:00:00 2001 From: cparsons Date: Tue, 7 Aug 2018 14:20:20 -0700 Subject: Migrate ObjcProvider to BuiltinProvider from NativeProvider RELNOTES: None. PiperOrigin-RevId: 207778688 --- .../build/lib/rules/objc/MultiArchBinarySupport.java | 11 +++++++++++ .../com/google/devtools/build/lib/rules/objc/ObjcCommon.java | 12 ++++++++++++ .../google/devtools/build/lib/rules/objc/ObjcProvider.java | 8 ++++---- 3 files changed, 27 insertions(+), 4 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc') 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 Iterable getTypedProviders( Iterable infoCollections, NativeProvider providerClass) { @@ -335,6 +337,15 @@ public class MultiArchBinarySupport { .collect(ImmutableList.toImmutableList()); } + private static Iterable getTypedProviders( + Iterable infoCollections, + BuiltinProvider providerClass) { + return Streams.stream(infoCollections) + .filter(infoCollection -> infoCollection.get(providerClass) != null) + .map(infoCollection -> infoCollection.get(providerClass)) + .collect(ImmutableList.toImmutableList()); + } + private static Iterable getTypedProviders( Iterable infoCollections, Class 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 ImmutableList.Builder addAnyProviders( ImmutableList.Builder listBuilder, TransitiveInfoCollection collection, @@ -313,6 +315,16 @@ public final class ObjcCommon { return listBuilder; } + private ImmutableList.Builder addAnyProviders( + ImmutableList.Builder listBuilder, + TransitiveInfoCollection collection, + BuiltinProvider 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, NestedSet> strictDependencyItems; /** Skylark constructor and identifier for ObjcProvider. */ - public static final NativeProvider SKYLARK_CONSTRUCTOR = new Constructor(); + public static final BuiltinProvider SKYLARK_CONSTRUCTOR = new Constructor(); private ObjcProvider( SkylarkSemantics semantics, @@ -1124,10 +1124,10 @@ public final class ObjcProvider extends NativeInfo implements ObjcProviderApi + private static class Constructor extends BuiltinProvider implements WithLegacySkylarkName { public Constructor() { - super(ObjcProvider.class, ObjcProvider.SKYLARK_NAME); + super(ObjcProvider.SKYLARK_NAME, ObjcProvider.class); } @Override -- cgit v1.2.3