Fail with bad AppleConfiguration from Starlark instead of crashing.
PiperOrigin-RevId: 333147905
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 1a751e0..89150da 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
@@ -157,7 +157,12 @@
AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
- ApplePlatform platform = appleConfiguration.getMultiArchPlatform(platformType);
+ ApplePlatform platform = null;
+ try {
+ platform = appleConfiguration.getMultiArchPlatform(platformType);
+ } catch (IllegalArgumentException e) {
+ ruleContext.throwWithRuleError(e);
+ }
ImmutableListMultimap<String, TransitiveInfoCollection> cpuToDepsCollectionMap =
MultiArchBinarySupport.transformMap(ruleContext.getPrerequisitesByConfiguration("deps"));
ImmutableListMultimap<String, ConfiguredTargetAndData> cpuToCTATDepsCollectionMap =
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 bd9b2d7..085f9fc 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
@@ -33,6 +33,7 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration;
+import com.google.devtools.build.lib.rules.apple.ApplePlatform;
import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper;
import com.google.devtools.build.lib.rules.cpp.CcInfo;
@@ -193,12 +194,17 @@
outputGroupCollector.put(OutputGroupInfo.VALIDATION, headerTokens.build());
AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class);
-
+ ApplePlatform platform = null;
+ try {
+ platform = appleConfiguration.getMultiArchPlatform(platformType);
+ } catch (IllegalArgumentException e) {
+ ruleContext.throwWithRuleError(e);
+ }
new LipoSupport(ruleContext)
.registerCombineArchitecturesAction(
librariesToLipo.build(),
ruleIntermediateArtifacts.combinedArchitectureArchive(),
- appleConfiguration.getMultiArchPlatform(platformType));
+ platform);
RuleConfiguredTargetBuilder targetBuilder =
ObjcRuleClasses.ruleConfiguredTarget(ruleContext, filesToBuild.build());