aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Nathan Harmata <nharmata@google.com>2016-06-28 14:52:21 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-06-29 08:53:28 +0000
commitcf738441e9cdda0f9d08861cb316596f77821baa (patch)
tree79eea6df358c35601df7e423d0e15de94519e509 /src
parentc079541bcda457ccbb82eacdae54ddb5d2ddc324 (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.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/RuleClass.java21
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;
}