From 80e70231b98c61f01d1c7014fe1324bfad8662fe Mon Sep 17 00:00:00 2001 From: Googler Date: Thu, 21 Sep 2023 06:35:09 -0700 Subject: [PATCH] Removes toRuleTags ValidityPredicate parameter. PiperOrigin-RevId: 567290365 Change-Id: Iff140a2953709d17140161b69f56ae158a9bb989 --- .../build/lib/analysis/RuleContext.java | 4 +--- .../build/lib/packages/Attribute.java | 7 ++----- .../lib/rules/objc/J2ObjcLibraryBaseRule.java | 21 +------------------ .../build/lib/packages/RuleClassTest.java | 6 +++--- 4 files changed, 7 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index 1cd8a7526cae36..fe06f1e273ac1d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -1949,9 +1949,7 @@ private void validateDirectPrerequisiteType( String ruleClass = prerequisite.getRuleClass(); if (!ruleClass.isEmpty()) { String reason = - attribute - .getValidityPredicate() - .checkValid(target.getAssociatedRule(), ruleClass, prerequisite.getRuleTags()); + attribute.getValidityPredicate().checkValid(target.getAssociatedRule(), ruleClass); if (reason != null) { reportBadPrerequisite(attribute, prerequisite, reason, false); } diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index 2beec84b153519..365ac29242f1cd 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java @@ -189,16 +189,13 @@ public interface ValidityPredicate { /** * This method should return null if the edge is valid, or a suitable error message if it is * not. Note that warnings are not supported. - * - * @param toRuleTags the tags of the rule, used as a workaround in {@code J2ObjcLibraryBaseRule} - * and should probably be deleted. */ @Nullable - String checkValid(Rule from, String toRuleClass, Set toRuleTags); + String checkValid(Rule from, String toRuleClass); } @SerializationConstant - public static final ValidityPredicate ANY_EDGE = (from, toRuleClass, toRuleTags) -> null; + public static final ValidityPredicate ANY_EDGE = (from, toRuleClass) -> null; /** A predicate class to check if the value of the attribute comes from a predefined set. */ public static class AllowedValueSet implements PredicateWithMessage { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryBaseRule.java b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryBaseRule.java index 90147504a0dc6b..46a97896a31728 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryBaseRule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryBaseRule.java @@ -21,15 +21,11 @@ import com.google.devtools.build.lib.analysis.BaseRuleClasses; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; -import com.google.devtools.build.lib.packages.Attribute.ValidityPredicate; -import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.cpp.CppRuleClasses; -import java.util.Set; -import javax.annotation.Nullable; /** * Abstract rule definition for j2objc_library. @@ -95,22 +91,7 @@ public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) The list of additional JRE emulation libraries required by all Java code translated by this j2objc_library rule. Only core JRE functionality is linked by default. */ - .add( - attr("jre_deps", LABEL_LIST) - .allowedRuleClasses("objc_library") - .allowedFileTypes() - .validityPredicate( - new ValidityPredicate() { - @Override - @Nullable - public String checkValid( - Rule from, String toRuleClass, Set toRuleTags) { - if (!toRuleTags.contains("j2objc_jre_lib")) { - return "Only J2ObjC JRE libraries are allowed"; - } - return null; - } - })) + .add(attr("jre_deps", LABEL_LIST).allowedRuleClasses("objc_library").allowedFileTypes()) .addToolchainTypes(CppRuleClasses.ccToolchainTypeRequirement(env)) .build(); } diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java index f584cc5369b97e..4657131a3cd799 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java @@ -1117,7 +1117,7 @@ public void testValidityChecker() throws Exception { ValidityPredicate checker = new ValidityPredicate() { @Override - public String checkValid(Rule from, String toRuleClass, Set toRuleTags) { + public String checkValid(Rule from, String toRuleClass) { assertThat(from.getName()).isEqualTo("top"); switch (toRuleClass) { case "dep1class": @@ -1144,13 +1144,13 @@ public String checkValid(Rule from, String toRuleClass, Set toRuleTags) topClass .getAttributeByName("deps") .getValidityPredicate() - .checkValid(topRule, dep1.getRuleClass(), dep1.getRuleTags())) + .checkValid(topRule, dep1.getRuleClass())) .isEqualTo("pear"); assertThat( topClass .getAttributeByName("deps") .getValidityPredicate() - .checkValid(topRule, dep2.getRuleClass(), dep2.getRuleTags())) + .checkValid(topRule, dep2.getRuleClass())) .isNull(); }