aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-08-07 14:20:20 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-07 14:22:11 -0700
commit075ab1e258902360bbd039d4b9fb4a6041a988d2 (patch)
tree0a008f43b97e61b3d16601921117aa36523faa53 /src/main/java/com/google/devtools/build/lib/rules
parentdf8ee192ca59dfd5b534f2268ea1cd62c48c4ab5 (diff)
Migrate ObjcProvider to BuiltinProvider from NativeProvider
RELNOTES: None. PiperOrigin-RevId: 207778688
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java12
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java8
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