bazel syntax: eliminate two subclasses of BuiltinFunction
This change replaces two test-only subclasses of BuiltinFunction with
StarlarkCallables. (The remaining two subclasses, rule and
repository_rule, will be dealt with in a follow-up.)
Also, change type of rule's and repository_rule's "implementation" parameter
to StarlarkFunction, and eliminate casts that already made this assumption.
Also, give StarlarkCallable.getLocation a default value of BUILTIN.
PiperOrigin-RevId: 285022081
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 f087893..29a0e35 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
@@ -55,10 +55,10 @@
import com.google.devtools.build.lib.packages.Type.ConversionException;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
-import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkFunction;
import com.google.devtools.build.lib.util.FileTypeSet;
import com.google.devtools.build.lib.util.StringUtil;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -640,7 +640,7 @@
PredicatesWithMessage.<Rule>alwaysTrue();
private Predicate<String> preferredDependencyPredicate = Predicates.alwaysFalse();
private AdvertisedProviderSet.Builder advertisedProviders = AdvertisedProviderSet.builder();
- private BaseFunction configuredTargetFunction = null;
+ private StarlarkFunction configuredTargetFunction = null;
private BuildSetting buildSetting = null;
private Function<? super Rule, Map<String, Label>> externalBindingsFunction =
NO_EXTERNAL_BINDINGS;
@@ -1150,10 +1150,8 @@
return attributes.containsKey(name);
}
- /**
- * Sets the rule implementation function. Meant for Skylark usage.
- */
- public Builder setConfiguredTargetFunction(BaseFunction func) {
+ /** Sets the rule implementation function. Meant for Skylark usage. */
+ public Builder setConfiguredTargetFunction(StarlarkFunction func) {
this.configuredTargetFunction = func;
return this;
}
@@ -1443,7 +1441,7 @@
/**
* The Skylark rule implementation of this RuleClass. Null for non Skylark executable RuleClasses.
*/
- @Nullable private final BaseFunction configuredTargetFunction;
+ @Nullable private final StarlarkFunction configuredTargetFunction;
/**
* The BuildSetting associated with this rule. Null for all RuleClasses except Skylark-defined
@@ -1530,7 +1528,7 @@
PredicateWithMessage<Rule> validityPredicate,
Predicate<String> preferredDependencyPredicate,
AdvertisedProviderSet advertisedProviders,
- @Nullable BaseFunction configuredTargetFunction,
+ @Nullable StarlarkFunction configuredTargetFunction,
Function<? super Rule, Map<String, Label>> externalBindingsFunction,
Function<? super Rule, ? extends Set<String>> optionReferenceFunction,
@Nullable Label ruleDefinitionEnvironmentLabel,
@@ -2369,10 +2367,9 @@
return binaryOutput;
}
- /**
- * Returns this RuleClass's custom Skylark rule implementation.
- */
- @Nullable public BaseFunction getConfiguredTargetFunction() {
+ /** Returns this RuleClass's custom Skylark rule implementation. */
+ @Nullable
+ public StarlarkFunction getConfiguredTargetFunction() {
return configuredTargetFunction;
}