aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-22 09:07:25 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-22 09:09:18 -0700
commit2c81467ba10ffa05fa5e2f06a47cc4d5241f195b (patch)
tree4d78aae305a1514b6ff7487ad7f829fbb53dc95d /src/main/java
parent3e9c776167b06fb7ff1e6b92de202548cb35c00a (diff)
Convert SkylarkActionFactory methods to use @SkylarkCallable instead of @SkylarkSignature
RELNOTES: None. PiperOrigin-RevId: 190073508
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java93
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java4
2 files changed, 27 insertions, 70 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index 71a597f3cc..104a98d190 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -46,10 +46,8 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkSignature;
import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
import com.google.devtools.build.lib.syntax.BaseFunction;
-import com.google.devtools.build.lib.syntax.BuiltinFunction;
import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.EvalUtils;
@@ -61,7 +59,6 @@ import com.google.devtools.build.lib.syntax.SkylarkList;
import com.google.devtools.build.lib.syntax.SkylarkMutable;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
import com.google.devtools.build.lib.syntax.SkylarkSemantics;
-import com.google.devtools.build.lib.syntax.SkylarkSignatureProcessor;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
@@ -889,13 +886,10 @@ public class SkylarkActionFactory implements SkylarkValue {
private String flagFormatString;
private boolean useAlways;
- @SkylarkSignature(
+ @SkylarkCallable(
name = "add",
- objectType = Args.class,
- returnType = NoneType.class,
doc = "Adds an argument to be dynamically expanded at evaluation time.",
parameters = {
- @Param(name = "self", type = Args.class, doc = "This args object."),
@Param(
name = "value",
type = Object.class,
@@ -955,29 +949,24 @@ public class SkylarkActionFactory implements SkylarkValue {
},
useLocation = true
)
- public static final BuiltinFunction add =
- new BuiltinFunction("add") {
- @SuppressWarnings("unused")
- public NoneType invoke(
- Args self,
- Object value,
- Object format,
- Object beforeEach,
- Object joinWith,
- Object mapFn,
- Location loc)
- throws EvalException {
- if (self.isImmutable()) {
- throw new EvalException(null, "cannot modify frozen value");
- }
- if (value instanceof SkylarkNestedSet || value instanceof SkylarkList) {
- self.addVectorArg(value, format, beforeEach, joinWith, mapFn, loc);
- } else {
- self.addScalarArg(value, format, beforeEach, joinWith, mapFn, loc);
- }
- return Runtime.NONE;
- }
- };
+ public NoneType addArgument(
+ Object value,
+ Object format,
+ Object beforeEach,
+ Object joinWith,
+ Object mapFn,
+ Location loc)
+ throws EvalException {
+ if (this.isImmutable()) {
+ throw new EvalException(null, "cannot modify frozen value");
+ }
+ if (value instanceof SkylarkNestedSet || value instanceof SkylarkList) {
+ addVectorArg(value, format, beforeEach, joinWith, mapFn, loc);
+ } else {
+ addScalarArg(value, format, beforeEach, joinWith, mapFn, loc);
+ }
+ return Runtime.NONE;
+ }
private void addVectorArg(
Object value, Object format, Object beforeEach, Object joinWith, Object mapFn, Location loc)
@@ -1135,38 +1124,18 @@ public class SkylarkActionFactory implements SkylarkValue {
public void repr(SkylarkPrinter printer) {
printer.append("context.args() object");
}
-
- static {
- SkylarkSignatureProcessor.configureSkylarkFunctions(Args.class);
- }
-
- /** No-op method that can be called to ensure the above static initializer runs. */
- public static void forceStaticInitialization() {
- }
}
- @SkylarkSignature(
+ @SkylarkCallable(
name = "args",
doc = "Returns an Args object that can be used to build memory-efficient command lines.",
- objectType = SkylarkActionFactory.class,
- returnType = Args.class,
- parameters = {
- @Param(
- name = "self",
- type = SkylarkActionFactory.class,
- doc = "This 'actions' object."
- )
- },
useEnvironment = true
)
- public static final BuiltinFunction args =
- new BuiltinFunction("args") {
- public Args invoke(SkylarkActionFactory self, Environment env) {
- return new Args(env.mutability(),
- env.getSemantics(),
- self.ruleContext.getAnalysisEnvironment().getEventHandler());
- }
- };
+ public Args args(Environment env) {
+ return new Args(env.mutability(),
+ env.getSemantics(),
+ ruleContext.getAnalysisEnvironment().getEventHandler());
+ }
@Override
public boolean isImmutable() {
@@ -1182,16 +1151,4 @@ public class SkylarkActionFactory implements SkylarkValue {
void nullify() {
ruleContext = null;
}
-
- static {
- SkylarkSignatureProcessor.configureSkylarkFunctions(SkylarkActionFactory.class);
- }
-
- /**
- * No-op method that can be called to ensure the above static initializer runs, as well as the
- * initializer for nested classes.
- */
- public static void forceStaticInitialization() {
- Args.forceStaticInitialization();
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
index dab37d82cb..6e04c6170d 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/BlazeRuntime.java
@@ -30,7 +30,6 @@ import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ServerDirectories;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
import com.google.devtools.build.lib.analysis.config.ConfigurationFragmentFactory;
-import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory;
import com.google.devtools.build.lib.buildeventstream.PathConverter;
import com.google.devtools.build.lib.buildtool.BuildRequestOptions;
@@ -1110,7 +1109,8 @@ public final class BlazeRuntime {
* frozen at all for them. They just pay the cost of extra synchronization on every access.
*/
private static void initSkylarkBuiltinsRegistry() {
- SkylarkActionFactory.forceStaticInitialization();
+ // Currently no classes need to be initialized here. The hook's still here because it's
+ // possible it may be needed again in the future.
com.google.devtools.build.lib.syntax.Runtime.getBuiltinRegistry().freeze();
}