diff options
author | 2016-05-23 17:39:42 +0000 | |
---|---|---|
committer | 2016-05-24 11:56:43 +0000 | |
commit | 4dfb22c4bad3dfa4dba46426c8587c0aa148d8d9 (patch) | |
tree | 5b09b10bef0e0ca634d237af86b6e9da7160f846 /src/main/java/com/google/devtools/build/lib/rules/objc | |
parent | fe206a490a2aa48c789c0edd35383407f44bc49b (diff) |
Allow use of Exceptions to exit early out of configured-target creation, instead of passing and checking null in all helpers.
Demonstrates this pattern usage in a few select rules (e.g. AndroidBinary) where this was particularly egregious.
There are many places which can benefit from this pattern -- this change doesn't try to fix them all at once.
--
MOS_MIGRATED_REVID=123012378
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc')
16 files changed, 59 insertions, 39 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 aee8633544..0e4cb61c1a 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 @@ -29,6 +29,7 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; import com.google.devtools.build.lib.packages.Attribute.SplitTransitionProvider; import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleCommandLineOptions; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; @@ -59,7 +60,8 @@ public class AppleBinary implements RuleConfiguredTargetFactory { "At least one source file is required (srcs, non_arc_srcs, or precompiled_srcs)."; @Override - public final ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public final ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ImmutableListMultimap<BuildConfiguration, ObjcProvider> configurationToNonPropagatedObjcMap = ruleContext.getPrerequisitesByConfiguration("non_propagated_deps", Mode.SPLIT, ObjcProvider.class); @@ -103,11 +105,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory { J2ObjcEntryClassProvider j2ObjcEntryClassProvider = j2ObjcEntryClassProviderBuilder.build(); if (!common.getCompilationArtifacts().get().getArchive().isPresent()) { - ruleContext.ruleError(REQUIRES_AT_LEAST_ONE_SOURCE_FILE); - return null; - } - if (ruleContext.hasErrors()) { - return null; + ruleContext.throwWithRuleError(REQUIRES_AT_LEAST_ONE_SOURCE_FILE); } archivesToLipo.add(common.getCompilationArtifacts().get().getArchive().get()); @@ -119,10 +117,7 @@ public class AppleBinary implements RuleConfiguredTargetFactory { new ExtraLinkArgs(), ImmutableList.<Artifact>of(), DsymOutputType.APP) .validateAttributes(); - - if (ruleContext.hasErrors()) { - return null; - } + ruleContext.assertNoErrors(); } AppleConfiguration appleConfiguration = ruleContext.getFragment(AppleConfiguration.class); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java index 5be91fa558..6100bf2d74 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleWatch1Extension.java @@ -31,6 +31,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; import com.google.devtools.build.lib.rules.objc.IosExtension.ExtensionSplitArchTransition; @@ -53,7 +54,8 @@ public class AppleWatch1Extension implements RuleConfiguredTargetFactory { ImmutableSet.of(new Attribute(WATCH_APP_DEPS_ATTR, Mode.SPLIT)); @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ObjcProvider.Builder applicationObjcProviderBuilder = new ObjcProvider.Builder(); ObjcProvider.Builder extensionObjcProviderBuilder = new ObjcProvider.Builder(); ObjcProvider.Builder exposedObjcProviderBuilder = new ObjcProvider.Builder(); 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 ef86fe6ea9..66af77d6b9 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 @@ -28,6 +28,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RunfilesSupport; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.Platform; @@ -71,14 +72,12 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory "At least one library dependency or source file is required."; @Override - public final ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public final ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ObjcCommon common = common(ruleContext); ObjcProvider objcProvider = common.getObjcProvider(); - if (!hasLibraryOrSources(objcProvider)) { - ruleContext.ruleError(REQUIRES_AT_LEAST_ONE_LIBRARY_OR_SOURCE_FILE); - return null; - } + assertLibraryOrSources(objcProvider, ruleContext); IntermediateArtifacts intermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext); @@ -92,9 +91,7 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory .validateAttributes() .addXcodeSettings(xcodeProviderBuilder); - if (ruleContext.hasErrors()) { - return null; - } + ruleContext.assertNoErrors(); J2ObjcMappingFileProvider j2ObjcMappingFileProvider = J2ObjcMappingFileProvider.union( ruleContext.getPrerequisites("deps", Mode.TARGET, J2ObjcMappingFileProvider.class)); @@ -115,10 +112,6 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory DsymOutputType.APP) .validateAttributes(); - if (ruleContext.hasErrors()) { - return null; - } - Optional<XcTestAppProvider> xcTestAppProvider; Optional<RunfilesSupport> maybeRunfilesSupport = Optional.absent(); switch (hasReleaseBundlingSupport) { @@ -191,9 +184,12 @@ abstract class BinaryLinkingTargetFactory implements RuleConfiguredTargetFactory return targetBuilder.build(); } - private boolean hasLibraryOrSources(ObjcProvider objcProvider) { - return !Iterables.isEmpty(objcProvider.get(LIBRARY)) // Includes sources from this target. - || !Iterables.isEmpty(objcProvider.get(IMPORTED_LIBRARY)); + private void assertLibraryOrSources(ObjcProvider objcProvider, RuleContext ruleContext) + throws RuleErrorException { + if (Iterables.isEmpty(objcProvider.get(LIBRARY)) // Includes sources from this target. + && Iterables.isEmpty(objcProvider.get(IMPORTED_LIBRARY))) { + ruleContext.throwWithRuleError(REQUIRES_AT_LEAST_ONE_LIBRARY_OR_SOURCE_FILE); + } } private ObjcCommon common(RuleContext ruleContext) { 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 846d6c6750..d5a3d570ae 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 @@ -77,6 +77,7 @@ 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.BuildType; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleToolchain; @@ -1308,8 +1309,9 @@ public final class CompilationSupport { * Validates compilation-related attributes on this rule. * * @return this compilation support + * @throws RuleErrorException if there are attribute errors */ - CompilationSupport validateAttributes() { + CompilationSupport validateAttributes() throws RuleErrorException { for (PathFragment absoluteInclude : Iterables.filter(attributes.includes(), PathFragment.IS_ABSOLUTE)) { ruleContext.attributeError( @@ -1338,6 +1340,7 @@ public final class CompilationSupport { } } + ruleContext.assertNoErrors(); return this; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java index f200e5513b..52dd30ca20 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ExperimentalObjcLibrary.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.cpp.CcLibraryHelper; @@ -83,7 +84,8 @@ public class ExperimentalObjcLibrary implements RuleConfiguredTargetFactory { } @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { CompilationArtifacts compilationArtifacts = CompilationSupport.compilationArtifacts(ruleContext); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java index 97bfa97960..1e3ad31586 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IosDevice.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RunfilesProvider; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.DottedVersion; @@ -33,7 +34,8 @@ import com.google.devtools.build.lib.rules.apple.XcodeVersionProperties; */ public final class IosDevice implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(RuleContext context) throws InterruptedException { + public ConfiguredTarget create(RuleContext context) + throws InterruptedException, RuleErrorException { AppleConfiguration appleConfiguration = context.getFragment(AppleConfiguration.class); String iosVersionAttribute = context.attributes().get(IosDeviceRule.IOS_VERSION_ATTR_NAME, STRING); 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 c21a7806ea..062eaed308 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 @@ -31,6 +31,7 @@ import com.google.devtools.build.lib.analysis.RunfilesSupport; import com.google.devtools.build.lib.analysis.actions.ExecutionRequirements; 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.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs; @@ -82,7 +83,8 @@ public final class IosTest implements RuleConfiguredTargetFactory { * to this method. */ @Override - public final ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public final ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ObjcCommon common = common(ruleContext); if (!common.getCompilationArtifacts().get().getArchive().isPresent()) { 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 2cf414f1b4..a4a2ba5229 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 @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.BuildType; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.syntax.Type; import com.google.devtools.build.lib.vfs.PathFragment; @@ -49,7 +50,8 @@ public class J2ObjcLibrary implements RuleConfiguredTargetFactory { "proto_library"); @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { checkAttributes(ruleContext); if (ruleContext.hasErrors()) { 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 2e85fb524a..0dd4dc4a15 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 @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; 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.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; /** @@ -30,7 +31,8 @@ import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; */ public class ObjcBundle implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ObjcCommon common = new ObjcCommon.Builder(ruleContext).build(); ImmutableList<Artifact> bundleImports = ruleContext 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 2fb999eaff..cbc74ea862 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 @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; @@ -39,7 +40,8 @@ import java.util.List; public class ObjcBundleLibrary implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ObjcCommon common = common(ruleContext); Bundling bundling = bundling(ruleContext, common); 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 1b86ca0935..67c0fa80dc 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 @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; 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.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.objc.ObjcCommon.Builder; import com.google.devtools.build.lib.rules.objc.ObjcSdkFrameworks.Attributes; @@ -33,7 +34,8 @@ import com.google.devtools.build.lib.syntax.Type; */ public class ObjcFramework implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { Attributes sdkFrameworkAttributes = new Attributes(ruleContext); ObjcCommon.Builder commonBuilder = 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 c0d1801d5c..b1c10f75fc 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 @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.objc.ObjcCommon.CompilationAttributes; import com.google.devtools.build.lib.rules.objc.ObjcCommon.ResourceAttributes; @@ -32,7 +33,8 @@ import com.google.devtools.build.lib.syntax.Type; */ public class ObjcImport implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ObjcCommon common = new ObjcCommon.Builder(ruleContext) .setCompilationAttributes(new CompilationAttributes(ruleContext)) 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 76130d94a1..41a0201586 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 @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.cpp.CcLinkParams; import com.google.devtools.build.lib.rules.cpp.CcLinkParamsProvider; @@ -94,7 +95,8 @@ public class ObjcLibrary implements RuleConfiguredTargetFactory { } @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { final ObjcCommon common = common( ruleContext, 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 c7b115f79a..a6ec22d9f1 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 @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; /** @@ -28,7 +29,8 @@ import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; */ public class ObjcProtoLibrary implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(final RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(final RuleContext ruleContext) + throws InterruptedException, RuleErrorException { ProtoSupport protoSupport = new ProtoSupport(ruleContext); ObjcCommon.Builder commonBuilder = new ObjcCommon.Builder(ruleContext); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcXcodeproj.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcXcodeproj.java index 6e8edf06bd..0c6730f4c6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcXcodeproj.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcXcodeproj.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; /** @@ -29,7 +30,8 @@ import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; public class ObjcXcodeproj implements RuleConfiguredTargetFactory { @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { NestedSetBuilder<Artifact> filesToBuild = NestedSetBuilder.stableOrder(); new XcodeSupport(ruleContext) .addFilesToBuild(filesToBuild) 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 ce6970d1c8..8c4e911b3f 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 @@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; @@ -61,7 +62,8 @@ public abstract class ReleaseBundlingTargetFactory implements RuleConfiguredTarg } @Override - public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException { + public ConfiguredTarget create(RuleContext ruleContext) + throws InterruptedException, RuleErrorException { validateAttributes(ruleContext); ObjcCommon common = common(ruleContext); |