diff options
author | 2016-06-28 14:52:21 +0000 | |
---|---|---|
committer | 2016-06-29 08:53:28 +0000 | |
commit | cf738441e9cdda0f9d08861cb316596f77821baa (patch) | |
tree | 79eea6df358c35601df7e423d0e15de94519e509 /src | |
parent | c079541bcda457ccbb82eacdae54ddb5d2ddc324 (diff) |
Expose versions of Package.Builder#addRule and RuleClass#createRule that don't perform internal sanity checks.
--
MOS_MIGRATED_REVID=126073693
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/Package.java | 13 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/RuleClass.java | 21 |
2 files changed, 31 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java index 44d9e308a3..04a8ef44c3 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Package.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java @@ -1205,9 +1205,13 @@ public class Package { } } - void addRule(Rule rule) throws NameConflictException { + /** + * Same as {@link #addRule}, except with no name conflict checks. + * + * <p>Don't call this function unless you know what you're doing. + */ + void addRuleUnchecked(Rule rule) { Preconditions.checkArgument(rule.getPackage() == pkg); - checkForConflicts(rule); // Now, modify the package: for (OutputFile outputFile : rule.getOutputFiles()) { targets.put(outputFile.getName(), outputFile); @@ -1225,6 +1229,11 @@ public class Package { } } + void addRule(Rule rule) throws NameConflictException { + checkForConflicts(rule); + addRuleUnchecked(rule); + } + private Builder beforeBuild() { Preconditions.checkNotNull(pkg); Preconditions.checkNotNull(filename); diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java index 6f4ffd784a..a9ef960478 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java +++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java @@ -1340,6 +1340,26 @@ public final class RuleClass { Location location, AttributeContainer attributeContainer) throws LabelSyntaxException, InterruptedException { + Rule rule = createRuleUnchecked( + pkgBuilder, ruleLabel, attributeValues, eventHandler, ast, location, attributeContainer); + rule.checkForNullLabels(); + return rule; + } + + /** + * Same as {@link #createRule}, except without some internal sanity checks. + * + * <p>Don't call this function unless you know what you're doing. + */ + Rule createRuleUnchecked( + Package.Builder pkgBuilder, + Label ruleLabel, + AttributeValuesMap attributeValues, + EventHandler eventHandler, + @Nullable FuncallExpression ast, + Location location, + AttributeContainer attributeContainer) + throws LabelSyntaxException, InterruptedException { Rule rule = pkgBuilder.createRule(ruleLabel, this, location, attributeContainer); populateRuleAttributeValues(rule, pkgBuilder, attributeValues, eventHandler); checkAspectAllowedValues(rule, eventHandler); @@ -1350,7 +1370,6 @@ public final class RuleClass { checkForDuplicateLabels(rule, eventHandler); checkThirdPartyRuleHasLicense(rule, pkgBuilder, eventHandler); checkForValidSizeAndTimeoutValues(rule, eventHandler); - rule.checkForNullLabels(); rule.checkValidityPredicate(eventHandler); return rule; } |