Allow Skylark rules to be private.
--
MOS_MIGRATED_REVID=97662036
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 05ad52a..0286796 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
@@ -225,7 +225,7 @@
* of that name already exists. Use {@link #overrideAttribute} in that case.
*/
public static final class Builder {
- private static final Pattern RULE_NAME_PATTERN = Pattern.compile("[A-Za-z][A-Za-z0-9_]*");
+ private static final Pattern RULE_NAME_PATTERN = Pattern.compile("[A-Za-z_][A-Za-z0-9_]*");
/**
* The type of the rule class, which determines valid names and required
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
index 6fcf85f..924bd04 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleClassFunctions.java
@@ -304,10 +304,6 @@
throw new EvalException(ast.getLocation(),
"Invalid rule class hasn't been exported by a Skylark file");
}
- if (ruleClassName.startsWith("_")) {
- throw new EvalException(ast.getLocation(), "Invalid rule class name '" + ruleClassName
- + "', cannot be private");
- }
if (type == RuleClassType.TEST != TargetUtils.isTestRuleName(ruleClassName)) {
throw new EvalException(ast.getLocation(), "Invalid rule class name '" + ruleClassName
+ "', test rule class names must end with '_test' and other rule classes must not");