aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-07-27 17:35:46 +0200
committerGravatar Jakob Buchgraber <buchgr@google.com>2017-07-28 10:44:43 +0200
commit73527c3be5e40ff5a2f868440f0c4d3a940abec7 (patch)
tree0735b88df090ec11756a0137e69d31d2015bc45f /src/main/java/com/google/devtools/build/lib/rules/objc
parent801f51f1c2e0f516aa136caa2efbe92390aab558 (diff)
Make all WithLegacySkylarkName providers declared providers.
RELNOTES: None. PiperOrigin-RevId: 163343931
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryRule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinaryRule.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosApplication.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java23
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcLibrary.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProvider.java35
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java41
29 files changed, 117 insertions, 99 deletions
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 d296905dfc..4028dc47da 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
@@ -121,7 +121,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
ApplePlatform platform = appleConfiguration.getMultiArchPlatform(platformType);
ImmutableListMultimap<BuildConfiguration, ObjcProvider> configurationToNonPropagatedObjcMap =
ruleContext.getPrerequisitesByConfiguration(
- "non_propagated_deps", Mode.SPLIT, ObjcProvider.class);
+ "non_propagated_deps", Mode.SPLIT, ObjcProvider.SKYLARK_CONSTRUCTOR);
ImmutableListMultimap<BuildConfiguration, TransitiveInfoCollection> configToDepsCollectionMap =
ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT);
@@ -165,7 +165,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
ObjcProvider objcProvider = objcProviderBuilder.build();
// TODO(cparsons): Stop propagating ObjcProvider directly from this rule.
- targetBuilder.addProvider(ObjcProvider.class, objcProvider);
+ targetBuilder.addNativeDeclaredProvider(objcProvider);
switch (getBinaryType(ruleContext)) {
case EXECUTABLE:
@@ -266,7 +266,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory {
}
ObjcProvider bundleLoaderObjcProvider =
- ruleContext.getPrerequisite(BUNDLE_LOADER_ATTR_NAME, Mode.TARGET, ObjcProvider.class);
+ ruleContext.getPrerequisite(
+ BUNDLE_LOADER_ATTR_NAME, Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
if (bundleLoaderObjcProvider != null) {
dylibProviders.add(bundleLoaderObjcProvider);
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 49575aa0de..81e0975a4f 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
@@ -81,7 +81,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT);
ImmutableListMultimap<BuildConfiguration, ObjcProvider> configToObjcAvoidDepsMap =
ruleContext.getPrerequisitesByConfiguration(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME,
- Mode.SPLIT, ObjcProvider.class);
+ Mode.SPLIT, ObjcProvider.SKYLARK_CONSTRUCTOR);
ImmutableListMultimap<BuildConfiguration, CcLinkParamsProvider> configToCcAvoidDepsMap =
ruleContext.getPrerequisitesByConfiguration(AppleStaticLibraryRule.AVOID_DEPS_ATTR_NAME,
Mode.SPLIT, CcLinkParamsProvider.CC_LINK_PARAMS);
@@ -181,7 +181,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
targetBuilder
// TODO(cparsons): Remove ObjcProvider as a direct provider.
- .addProvider(ObjcProvider.class, objcProvider)
+ .addNativeDeclaredProvider(objcProvider)
.addNativeDeclaredProvider(
new AppleStaticLibraryProvider(
ruleIntermediateArtifacts.combinedArchitectureArchive(),
@@ -215,7 +215,7 @@ public class AppleStaticLibrary implements RuleConfiguredTargetFactory {
.addDefines(ruleContext.getTokenizedStringListAttr("defines"))
.addDeps(propagatedDeps)
.addDepObjcProviders(
- ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class))
+ ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.addDepObjcProviders(protosObjcProvider.asSet())
.setIntermediateArtifacts(intermediateArtifacts)
.setAlwayslink(false)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryRule.java
index cff1acd722..20bc6656f4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryRule.java
@@ -18,11 +18,9 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fromTemplates;
-import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleClass;
@@ -83,8 +81,7 @@ public class AppleStaticLibraryRule implements RuleDefinition {
attr(AVOID_DEPS_ATTR_NAME, LABEL_LIST)
.direct_compile_time_input()
.allowedRuleClasses(ObjcRuleClasses.CompilingRule.ALLOWED_CC_DEPS_RULE_CLASSES)
- .mandatoryNativeProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(ObjcProvider.class))
+ .mandatoryProviders(ObjcProvider.SKYLARK_CONSTRUCTOR.id())
.cfg(splitTransitionProvider)
.allowedFileTypes()
.aspect(objcProtoAspect))
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java
index 00c92f4cb7..6ef4b6a9ac 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinary.java
@@ -111,7 +111,8 @@ public class AppleStubBinary implements RuleConfiguredTargetFactory {
ApplePlatform platform = appleConfiguration.getMultiArchPlatform(platformType);
ImmutableListMultimap<BuildConfiguration, ObjcProvider> configurationToDepsMap =
- ruleContext.getPrerequisitesByConfiguration("deps", Mode.SPLIT, ObjcProvider.class);
+ ruleContext.getPrerequisitesByConfiguration(
+ "deps", Mode.SPLIT, ObjcProvider.SKYLARK_CONSTRUCTOR);
Artifact outputArtifact =
ObjcRuleClasses.intermediateArtifacts(ruleContext).combinedArchitectureBinary();
@@ -131,7 +132,7 @@ public class AppleStubBinary implements RuleConfiguredTargetFactory {
ObjcProvider objcProvider = objcProviderBuilder.build();
// TODO(cparsons): Stop propagating ObjcProvider directly from this rule.
- targetBuilder.addProvider(ObjcProvider.class, objcProvider);
+ targetBuilder.addNativeDeclaredProvider(objcProvider);
targetBuilder.addNativeDeclaredProvider(
new AppleExecutableBinaryProvider(outputArtifact, objcProvider));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinaryRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinaryRule.java
index f2e2c59a2d..575f001040 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinaryRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStubBinaryRule.java
@@ -18,11 +18,9 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import static com.google.devtools.build.lib.syntax.Type.STRING;
-import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
@@ -51,8 +49,7 @@ public class AppleStubBinaryRule implements RuleDefinition {
.add(
attr("deps", LABEL_LIST)
.direct_compile_time_input()
- .mandatoryNativeProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(ObjcProvider.class))
+ .mandatoryProviders(ObjcProvider.SKYLARK_CONSTRUCTOR.id())
.allowedFileTypes()
.cfg(splitTransitionProvider))
/*<!-- #BLAZE_RULE(apple_stub_binary).IMPLICIT_OUTPUTS -->
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
index 79ae78973a..b78dc3d291 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/BinaryLinkingTargetFactory.java
@@ -183,7 +183,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory
RuleConfiguredTargetBuilder targetBuilder =
ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(ObjcProvider.class, objcProvider)
+ .addNativeDeclaredProvider(objcProvider)
.addNativeDeclaredProvider(objcProvider)
.addProvider(
InstrumentedFilesProvider.class,
@@ -193,7 +193,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory
if (xcTestAppProvider.isPresent()) {
// TODO(bazel-team): Stop exporting an XcTestAppProvider once objc_binary no longer creates an
// application bundle.
- targetBuilder.addProvider(XcTestAppProvider.class, xcTestAppProvider.get());
+ targetBuilder.addNativeDeclaredProvider(xcTestAppProvider.get());
}
if (maybeRunfilesSupport.isPresent()) {
RunfilesSupport runfilesSupport = maybeRunfilesSupport.get();
@@ -230,7 +230,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory
.addDepObjcProviders(protosObjcProvider.asSet())
.addNonPropagatedDepObjcProviders(
ruleContext.getPrerequisites(
- "non_propagated_deps", Mode.TARGET, ObjcProvider.class))
+ "non_propagated_deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.setIntermediateArtifacts(intermediateArtifacts)
.setAlwayslink(false)
.setHasModuleMap()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java
index 01d25fb7b9..aafd755c9c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationAttributes.java
@@ -269,14 +269,15 @@ final class CompilationAttributes {
// missing, its private headers will be treated as public!
if (ruleContext.attributes().has("deps", BuildType.LABEL_LIST)) {
Iterable<ObjcProvider> providers =
- ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProvider.class);
+ ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
for (ObjcProvider provider : providers) {
moduleMaps.addTransitive(provider.get(TOP_LEVEL_MODULE_MAP));
}
}
if (ruleContext.attributes().has("non_propagated_deps", BuildType.LABEL_LIST)) {
Iterable<ObjcProvider> providers =
- ruleContext.getPrerequisites("non_propagated_deps", Mode.TARGET, ObjcProvider.class);
+ ruleContext.getPrerequisites(
+ "non_propagated_deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
for (ObjcProvider provider : providers) {
moduleMaps.addTransitive(provider.get(TOP_LEVEL_MODULE_MAP));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 299ab73c5b..306e4d460e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -1097,7 +1097,7 @@ public abstract class CompilationSupport {
Artifact dummyArchive =
Iterables.getOnlyElement(
ruleContext
- .getPrerequisite("$dummy_lib", Mode.TARGET, ObjcProvider.class)
+ .getPrerequisite("$dummy_lib", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR)
.get(LIBRARY));
CustomCommandLine commandLine =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosApplication.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosApplication.java
index 4af8cee48d..cd418a338c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosApplication.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosApplication.java
@@ -60,7 +60,7 @@ public class IosApplication extends ReleaseBundlingTargetFactory {
@Override
protected void validateAttributes(RuleContext ruleContext) {
Iterable<ObjcProvider> extensionProviders = ruleContext.getPrerequisites(
- "extensions", Mode.TARGET, ObjcProvider.class);
+ "extensions", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
if (hasMoreThanOneWatchExtension(extensionProviders, Flag.HAS_WATCH1_EXTENSION)
|| hasMoreThanOneWatchExtension(extensionProviders, Flag.HAS_WATCH2_EXTENSION)) {
ruleContext.attributeError("extensions", "An iOS application can contain exactly one "
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
index d1ddc215a0..908020bea4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTest.java
@@ -268,7 +268,7 @@ public final class IosTest implements RuleConfiguredTargetFactory {
.addDepObjcProviders(protosObjcProvider.asSet())
.addNonPropagatedDepObjcProviders(
ruleContext.getPrerequisites(
- "non_propagated_deps", Mode.TARGET, ObjcProvider.class))
+ "non_propagated_deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.setIntermediateArtifacts(ObjcRuleClasses.intermediateArtifacts(ruleContext))
.setHasModuleMap();
@@ -283,7 +283,8 @@ public final class IosTest implements RuleConfiguredTargetFactory {
ObjcConfiguration config = ruleContext.getFragment(ObjcConfiguration.class);
if (config.runMemleaks()) {
builder.addDepObjcProviders(
- ruleContext.getPrerequisites(MEMLEAKS_DEP_ATTR, Mode.TARGET, ObjcProvider.class));
+ ruleContext.getPrerequisites(
+ MEMLEAKS_DEP_ATTR, Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR));
}
return builder.build();
@@ -295,6 +296,7 @@ public final class IosTest implements RuleConfiguredTargetFactory {
/** Returns the {@link XcTestAppProvider} of the {@code xctest_app} attribute. */
protected static XcTestAppProvider xcTestAppProvider(RuleContext ruleContext) {
- return ruleContext.getPrerequisite(XCTEST_APP_ATTR, Mode.TARGET, XcTestAppProvider.class);
+ return ruleContext.getPrerequisite(
+ XCTEST_APP_ATTR, Mode.TARGET, XcTestAppProvider.SKYLARK_CONSTRUCTOR);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
index 55bfea69c0..78aaba6988 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosTestRule.java
@@ -21,11 +21,9 @@ import static com.google.devtools.build.lib.packages.BuildType.LABEL_LIST;
import static com.google.devtools.build.lib.syntax.Type.BOOLEAN;
import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
-import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.BaseRuleClasses;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute.ComputedDefault;
@@ -92,9 +90,7 @@ public class IosTestRule implements RuleDefinition {
}
})
.allowedFileTypes()
- .mandatoryNativeProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(
- XcTestAppProvider.class)))
+ .mandatoryProviders(XcTestAppProvider.SKYLARK_CONSTRUCTOR.id()))
.override(
attr(BundlingRule.INFOPLIST_ATTR, LABEL)
.value(
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
index 219eaa51c7..61e99ec6d9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcAspect.java
@@ -304,7 +304,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
return builder
.addProvider(
exportedJ2ObjcMappingFileProvider(base, ruleContext, directJ2ObjcMappingFileProvider))
- .addProvider(common.getObjcProvider())
+ .addNativeDeclaredProvider(common.getObjcProvider())
.build();
}
@@ -806,7 +806,7 @@ public class J2ObjcAspect extends NativeAspectClass implements ConfiguredAspectF
builder.addDepObjcProviders(ruleContext.getPrerequisites(
dependentAttribute.getName(),
dependentAttribute.getAccessMode(),
- ObjcProvider.class));
+ ObjcProvider.SKYLARK_CONSTRUCTOR));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
index e1537d07cd..810ce017de 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibrary.java
@@ -72,12 +72,13 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
.build();
Iterable<ObjcProvider> jreDeps =
- ruleContext.getPrerequisites("jre_deps", Mode.TARGET, ObjcProvider.class);
+ ruleContext.getPrerequisites("jre_deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
ObjcProvider.Builder objcProviderBuilder =
new ObjcProvider.Builder()
.addTransitiveAndPropagate(jreDeps)
.addTransitiveAndPropagate(
- ruleContext.getPrerequisites("deps", Mode.TARGET, ObjcProvider.class));
+ ruleContext.getPrerequisites(
+ "deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR));
for (ObjcProvider prereq : jreDeps) {
objcProviderBuilder.addTransitiveAndPropagate(JRE_LIBRARY, prereq.get(LIBRARY));
}
@@ -109,7 +110,6 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory {
.add(RunfilesProvider.class, RunfilesProvider.EMPTY)
.addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider)
.addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider)
- .addProvider(ObjcProvider.class, objcProvider)
.addNativeDeclaredProvider(objcProvider)
.build();
}
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 9305e8e64d..dd78199c83 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
@@ -258,7 +258,8 @@ public class MultiArchBinarySupport {
Iterable<ObjcProvider> additionalDepProviders =
Iterables.concat(
dylibObjcProviders,
- ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class),
+ ruleContext.getPrerequisites("bundles", Mode.TARGET,
+ ObjcProvider.SKYLARK_CONSTRUCTOR),
protosObjcProvider.asSet());
ObjcCommon common =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java
index dd7eda81fa..9888805be1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundle.java
@@ -45,7 +45,6 @@ public class ObjcBundle implements RuleConfiguredTargetFactory {
NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(STABLE_ORDER);
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild)
- .addProvider(ObjcProvider.class, common.getObjcProvider())
.addNativeDeclaredProvider(common.getObjcProvider())
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
index aa6d9b3b01..c341593973 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcBundleLibrary.java
@@ -75,7 +75,6 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory {
.build();
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(ObjcProvider.class, nestedBundleProvider)
.addNativeDeclaredProvider(nestedBundleProvider)
.build();
}
@@ -113,7 +112,7 @@ public class ObjcBundleLibrary implements RuleConfiguredTargetFactory {
return new ObjcCommon.Builder(ruleContext)
.setResourceAttributes(new ResourceAttributes(ruleContext))
.addDepObjcProviders(
- ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class))
+ ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.setIntermediateArtifacts(ObjcRuleClasses.intermediateArtifacts(ruleContext))
.build();
}
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 443144b571..55ac6df555 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
@@ -67,6 +67,8 @@ import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.TransitiveInfoCollection;
import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
+import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
+import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.cpp.CcLinkParams;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
@@ -257,7 +259,7 @@ public final class ObjcCommon {
ImmutableList.<CcLinkParamsProvider>builder();
for (TransitiveInfoCollection dep : deps) {
- addAnyProviders(propagatedObjcDeps, dep, ObjcProvider.class);
+ addAnyProviders(propagatedObjcDeps, dep, ObjcProvider.SKYLARK_CONSTRUCTOR);
addAnyProviders(cppDeps, dep, CppCompilationContext.class);
if (isCcLibrary(dep)) {
cppDepLinkParams.add(dep.get(CcLinkParamsProvider.CC_LINK_PARAMS));
@@ -279,7 +281,7 @@ public final class ObjcCommon {
ImmutableList.<ObjcProvider>builder();
for (TransitiveInfoCollection dep : runtimeDeps) {
- addAnyProviders(propagatedDeps, dep, ObjcProvider.class);
+ addAnyProviders(propagatedDeps, dep, ObjcProvider.SKYLARK_CONSTRUCTOR);
}
this.runtimeDepObjcProviders = Iterables.concat(
this.runtimeDepObjcProviders, propagatedDeps.build());
@@ -290,12 +292,25 @@ public final class ObjcCommon {
ImmutableList.Builder<T> listBuilder,
TransitiveInfoCollection collection,
Class<T> providerClass) {
- if (collection.getProvider(providerClass) != null) {
- listBuilder.add(collection.getProvider(providerClass));
+ T provider = collection.getProvider(providerClass);
+ if (provider != null) {
+ listBuilder.add(provider);
}
return listBuilder;
}
+ private <T extends SkylarkClassObject> ImmutableList.Builder<T> addAnyProviders(
+ ImmutableList.Builder<T> listBuilder,
+ TransitiveInfoCollection collection,
+ NativeClassObjectConstructor<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
* declaring rule.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java
index e11a01ef46..701856b775 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcFramework.java
@@ -68,7 +68,6 @@ public class ObjcFramework implements RuleConfiguredTargetFactory {
NestedSetBuilder.<Artifact>linkOrder().addAll(frameworkImports).build());
NestedSet<Artifact> filesToBuild = NestedSetBuilder.emptySet(STABLE_ORDER);
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild)
- .addProvider(ObjcProvider.class, objcProvider)
.addNativeDeclaredProvider(objcProvider)
.addNativeDeclaredProvider(frameworkProvider)
.build();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java
index 37c8cb6f87..a1253f0d11 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcImport.java
@@ -42,7 +42,8 @@ public class ObjcImport implements RuleConfiguredTargetFactory {
.addExtraImportLibraries(
ruleContext.getPrerequisiteArtifacts("archives", Mode.TARGET).list())
.addDepObjcProviders(
- ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class))
+ ruleContext.getPrerequisites(
+ "bundles", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.build();
NestedSetBuilder<Artifact> filesToBuild = NestedSetBuilder.stableOrder();
@@ -64,7 +65,6 @@ public class ObjcImport implements RuleConfiguredTargetFactory {
new ResourceSupport(ruleContext).validateAttributes();
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(ObjcProvider.class, common.getObjcProvider())
.addNativeDeclaredProvider(common.getObjcProvider())
.build();
}
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 814e3717bc..c45c378549 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
@@ -46,9 +46,10 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
.addDeps(ruleContext.getPrerequisites("deps", Mode.TARGET))
.addRuntimeDeps(ruleContext.getPrerequisites("runtime_deps", Mode.TARGET))
.addDepObjcProviders(
- ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.class))
+ ruleContext.getPrerequisites("bundles", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.addNonPropagatedDepObjcProviders(
- ruleContext.getPrerequisites("non_propagated_deps", Mode.TARGET, ObjcProvider.class))
+ ruleContext.getPrerequisites(
+ "non_propagated_deps", Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.setIntermediateArtifacts(ObjcRuleClasses.intermediateArtifacts(ruleContext))
.setAlwayslink(ruleContext.attributes().get("alwayslink", Type.BOOLEAN))
.setHasModuleMap()
@@ -89,7 +90,6 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory {
J2ObjcEntryClassProvider.class)).build();
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(ObjcProvider.class, common.getObjcProvider())
.addNativeDeclaredProvider(common.getObjcProvider())
.addProvider(J2ObjcEntryClassProvider.class, j2ObjcEntryClassProvider)
.addProvider(J2ObjcMappingFileProvider.class, j2ObjcMappingFileProvider)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
index 4b9143e8fe..b386e9b083 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoAspect.java
@@ -98,7 +98,7 @@ public class ObjcProtoAspect extends NativeAspectClass implements ConfiguredAspe
// (i.e. objc_binary) don't have to depend on it.
ObjcProvider protobufObjcProvider =
ruleContext.getPrerequisite(
- ObjcRuleClasses.PROTO_LIB_ATTR, Mode.TARGET, ObjcProvider.class);
+ ObjcRuleClasses.PROTO_LIB_ATTR, Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR);
aspectObjcProtoProvider.addProtobufHeaders(protobufObjcProvider.get(ObjcProvider.HEADER));
aspectObjcProtoProvider.addProtobufHeaderSearchPaths(
protobufObjcProvider.get(ObjcProvider.INCLUDE));
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
index 64bdc18eed..ae0d22be15 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibrary.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.rules.objc;
-
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -67,7 +66,6 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory {
.addFilesToBuild(filesToBuild);
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(ObjcProvider.class, protoSupport.getObjcProvider().get())
.addNativeDeclaredProvider(protoSupport.getObjcProvider().get())
.build();
}
@@ -110,7 +108,7 @@ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory {
.addFilesToBuild(filesToBuild);
return ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(ObjcProvider.class, protoSupport.getObjcProvider())
+ .addNativeDeclaredProvider(protoSupport.getObjcProvider())
.build();
}
}
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 dfe934a344..4a2081c7a6 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
@@ -25,12 +25,12 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Iterables;
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.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.NativeClassObjectConstructor;
+import com.google.devtools.build.lib.packages.NativeClassObjectConstructor.WithLegacySkylarkName;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider;
import com.google.devtools.build.lib.rules.cpp.CppModuleMap;
@@ -55,17 +55,11 @@ import java.util.Map;
category = SkylarkModuleCategory.PROVIDER,
doc = "A provider for compilation and linking of objc."
)
-public final class ObjcProvider extends SkylarkClassObject
- implements TransitiveInfoProvider, TransitiveInfoProvider.WithLegacySkylarkName {
+public final class ObjcProvider extends SkylarkClassObject {
/** Skylark name for the ObjcProvider. */
public static final String SKYLARK_NAME = "objc";
- @Override
- public String getSkylarkName() {
- return SKYLARK_NAME;
- }
-
/**
* Represents one of the things this provider can provide transitively. Things are provided as
* {@link NestedSet}s of type E.
@@ -506,12 +500,7 @@ public final class ObjcProvider extends SkylarkClassObject
/** Skylark constructor and identifier for ObjcProvider. */
public static final NativeClassObjectConstructor<ObjcProvider> SKYLARK_CONSTRUCTOR =
- new NativeClassObjectConstructor<ObjcProvider>(ObjcProvider.class, SKYLARK_NAME) {
- @Override
- public String getErrorMessageFormatForInstances() {
- return "ObjcProvider field %s could not be instantiated";
- }
- };
+ new Constructor();
private ObjcProvider(
ImmutableMap<Key<?>, NestedSet<?>> items,
@@ -998,4 +987,22 @@ public final class ObjcProvider extends SkylarkClassObject
return new ObjcProvider(propagated, nonPropagated, strictDependency, skylarkFields.build());
}
}
+
+ private static class Constructor
+ extends NativeClassObjectConstructor<ObjcProvider>
+ implements WithLegacySkylarkName {
+ public Constructor() {
+ super(ObjcProvider.class, ObjcProvider.SKYLARK_NAME);
+ }
+
+ @Override
+ public String getSkylarkName() {
+ return SKYLARK_NAME;
+ }
+
+ @Override
+ public String getErrorMessageFormatForInstances() {
+ return "ObjcProvider field %s could not be instantiated";
+ }
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
index 411a7957f7..a1138a28d6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java
@@ -36,7 +36,6 @@ import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
@@ -673,9 +672,8 @@ public class ObjcRuleClasses {
attr("deps", LABEL_LIST)
.direct_compile_time_input()
.allowedRuleClasses(ALLOWED_CC_DEPS_RULE_CLASSES)
- .mandatoryNativeProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(ObjcProvider.class))
- .allowedFileTypes())
+ .mandatoryProviders(ObjcProvider.SKYLARK_CONSTRUCTOR.id())
+ .allowedFileTypes())
/* <!-- #BLAZE_RULE($objc_compiling_rule).ATTRIBUTE(runtime_deps) -->
The list of framework targets that are late loaded at runtime. They are included in the
app bundle but not linked against at build time.
@@ -697,8 +695,7 @@ public class ObjcRuleClasses {
attr("non_propagated_deps", LABEL_LIST)
.direct_compile_time_input()
.allowedRuleClasses(ALLOWED_CC_DEPS_RULE_CLASSES)
- .mandatoryNativeProviders(
- ImmutableList.<Class<? extends TransitiveInfoProvider>>of(ObjcProvider.class))
+ .mandatoryProviders(ObjcProvider.SKYLARK_CONSTRUCTOR.id())
.allowedFileTypes())
/* <!-- #BLAZE_RULE($objc_compiling_rule).ATTRIBUTE(defines) -->
Extra <code>-D</code> flags to pass to the compiler. They should be in
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
index 053cd56181..9038e68d78 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
@@ -392,7 +392,7 @@ final class ProtobufSupport {
} else {
commonBuilder.addDepObjcProviders(
ruleContext.getPrerequisites(
- ObjcRuleClasses.PROTO_LIB_ATTR, Mode.TARGET, ObjcProvider.class));
+ ObjcRuleClasses.PROTO_LIB_ATTR, Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR));
}
return commonBuilder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
index 8139368952..343aa82741 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtocolBuffers2Support.java
@@ -127,7 +127,7 @@ final class ProtocolBuffers2Support {
.addIncludes(getIncludes())
.addDepObjcProviders(
ruleContext.getPrerequisites(
- ObjcRuleClasses.PROTO_LIB_ATTR, Mode.TARGET, ObjcProvider.class))
+ ObjcRuleClasses.PROTO_LIB_ATTR, Mode.TARGET, ObjcProvider.SKYLARK_CONSTRUCTOR))
.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
index 6aa8f487bc..a6d32b3a0c 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingSupport.java
@@ -1174,7 +1174,8 @@ public final class ReleaseBundlingSupport {
}
for (ObjcProvider provider
- : ruleContext.getPrerequisites("binary", Mode.DONT_CHECK, ObjcProvider.class)) {
+ : ruleContext.getPrerequisites(
+ "binary", Mode.DONT_CHECK, ObjcProvider.SKYLARK_CONSTRUCTOR)) {
if (!provider.get(ObjcProvider.MULTI_ARCH_LINKED_BINARIES).isEmpty()) {
return Iterables.getOnlyElement(provider.get(ObjcProvider.MULTI_ARCH_LINKED_BINARIES));
}
@@ -1189,7 +1190,8 @@ public final class ReleaseBundlingSupport {
NestedSetBuilder<Artifact> linkedBinaries = NestedSetBuilder.stableOrder();
for (ObjcProvider provider
- : ruleContext.getPrerequisites("binary", Mode.DONT_CHECK, ObjcProvider.class)) {
+ : ruleContext.getPrerequisites(
+ "binary", Mode.DONT_CHECK, ObjcProvider.SKYLARK_CONSTRUCTOR)) {
linkedBinaries.addTransitive(provider.get(ObjcProvider.LINKED_BINARY));
}
@@ -1267,7 +1269,7 @@ public final class ReleaseBundlingSupport {
if (ruleContext.attributes().has("binary", BuildType.LABEL)) {
for (TransitiveInfoCollection prerequisite
: ruleContext.getPrerequisites("binary", Mode.DONT_CHECK)) {
- ObjcProvider prerequisiteProvider = prerequisite.getProvider(ObjcProvider.class);
+ ObjcProvider prerequisiteProvider = prerequisite.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
if (prerequisiteProvider != null) {
Artifact sourceArtifact = Iterables.getOnlyElement(prerequisiteProvider.get(key), null);
if (sourceArtifact != null) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java
index 53820e6281..dc5962b7b9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ReleaseBundlingTargetFactory.java
@@ -80,7 +80,7 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg
RuleConfiguredTargetBuilder targetBuilder =
ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build())
- .addProvider(XcTestAppProvider.class, releaseBundlingSupport.xcTestAppProvider())
+ .addNativeDeclaredProvider(releaseBundlingSupport.xcTestAppProvider())
.addProvider(
InstrumentedFilesProvider.class,
InstrumentedFilesCollector.forward(ruleContext, "binary"));
@@ -88,7 +88,6 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg
ObjcProvider exposedObjcProvider = exposedObjcProvider(ruleContext, releaseBundlingSupport);
if (exposedObjcProvider != null) {
targetBuilder
- .addProvider(ObjcProvider.class, exposedObjcProvider)
.addNativeDeclaredProvider(exposedObjcProvider);
}
@@ -143,7 +142,7 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg
for (Attribute attribute : dependencyAttributes) {
builder.addDepObjcProviders(
ruleContext.getPrerequisites(
- attribute.getName(), attribute.getAccessMode(), ObjcProvider.class));
+ attribute.getName(), attribute.getAccessMode(), ObjcProvider.SKYLARK_CONSTRUCTOR));
}
return builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java b/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
index 051bcd5dca..a0a306ffc2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/XcTestAppProvider.java
@@ -16,9 +16,9 @@ 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.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.packages.NativeClassObjectConstructor;
+import com.google.devtools.build.lib.packages.NativeClassObjectConstructor.WithLegacySkylarkName;
import com.google.devtools.build.lib.packages.SkylarkClassObject;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
@@ -33,33 +33,21 @@ import com.google.devtools.build.lib.util.Preconditions;
"Deprecated. A provider for XCTest apps for testing. This is a legacy provider and should "
+ "not be used."
)
-public final class XcTestAppProvider extends SkylarkClassObject
- implements TransitiveInfoProvider, TransitiveInfoProvider.WithLegacySkylarkName {
+public final class XcTestAppProvider extends SkylarkClassObject {
/**
* The skylark struct key name for a rule implementation to use when exporting an ObjcProvider.
*/
public static final String XCTEST_APP_SKYLARK_PROVIDER_NAME = "xctest_app";
- @Override
- public String getSkylarkName() {
- return XCTEST_APP_SKYLARK_PROVIDER_NAME;
- }
-
- private static final NativeClassObjectConstructor<XcTestAppProvider> XCTEST_APP_PROVIDER =
- new NativeClassObjectConstructor<XcTestAppProvider>(
- XcTestAppProvider.class, "xctest_app_provider") {
- @Override
- public String getErrorMessageFormatForInstances() {
- return "XcTestAppProvider field %s could not be instantiated";
- }
- };
+ public static final NativeClassObjectConstructor<XcTestAppProvider> SKYLARK_CONSTRUCTOR =
+ new Constructor();
private final Artifact bundleLoader;
private final Artifact ipa;
private final ObjcProvider objcProvider;
XcTestAppProvider(Artifact bundleLoader, Artifact ipa, ObjcProvider objcProvider) {
- super(XCTEST_APP_PROVIDER, getSkylarkFields(bundleLoader, ipa, objcProvider));
+ super(SKYLARK_CONSTRUCTOR, getSkylarkFields(bundleLoader, ipa, objcProvider));
this.bundleLoader = Preconditions.checkNotNull(bundleLoader);
this.ipa = Preconditions.checkNotNull(ipa);
this.objcProvider = Preconditions.checkNotNull(objcProvider);
@@ -96,4 +84,23 @@ public final class XcTestAppProvider extends SkylarkClassObject
.put("objc", objcProvider)
.build();
}
+
+ private static class Constructor
+ extends NativeClassObjectConstructor<XcTestAppProvider>
+ implements WithLegacySkylarkName {
+
+ private Constructor() {
+ super(XcTestAppProvider.class, "xctest_app_provider");
+ }
+
+ @Override
+ public String getSkylarkName() {
+ return XCTEST_APP_SKYLARK_PROVIDER_NAME;
+ }
+
+ @Override
+ public String getErrorMessageFormatForInstances() {
+ return "XcTestAppProvider field %s could not be instantiated";
+ }
+ }
}