bazel syntax: remove Location from calling convention
This change removes the Location parameter from StarlarkCallable.call
(built-in functions) and the SkylarkCallable.useLocation feature from
annotated built-in functions.
Lately, the thread's call stack records the position of the program
counter of each active frame, so clients may access it through
StarlarkThread.getCallerLocation.
Numerous parameters that pass Locations merely to construct an
EvalException have been deleted. (This is the bulk of the change.)
Many places that directly constructed an EvalException now call
Starlark.errorf instead. (A few places in Bazel formerly specified a
location other than thread.getCallerLocation, or equivalently, null.)
The evaluator ensures that any exception thrown by Starlark.call
is augmented with the location of the call.
PiperOrigin-RevId: 291009378
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
index 290cfa7..dac9043 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
@@ -22,6 +22,7 @@
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import javax.annotation.Nullable;
/** DefaultInfo is provided by all targets implicitly and contains all standard fields. */
@@ -131,8 +132,13 @@
}
@Override
- public DefaultInfo constructor(Object files, Object runfilesObj,
- Object dataRunfilesObj, Object defaultRunfilesObj, Object executable, Location loc)
+ public DefaultInfo constructor(
+ Object files,
+ Object runfilesObj,
+ Object dataRunfilesObj,
+ Object defaultRunfilesObj,
+ Object executable,
+ StarlarkThread thread)
throws EvalException {
Runfiles statelessRunfiles = castNoneToNull(Runfiles.class, runfilesObj);
@@ -140,12 +146,13 @@
Runfiles defaultRunfiles = castNoneToNull(Runfiles.class, defaultRunfilesObj);
if ((statelessRunfiles != null) && (dataRunfiles != null || defaultRunfiles != null)) {
- throw new EvalException(loc, "Cannot specify the provider 'runfiles' "
- + "together with 'data_runfiles' or 'default_runfiles'");
+ throw Starlark.errorf(
+ "Cannot specify the provider 'runfiles' together with 'data_runfiles' or"
+ + " 'default_runfiles'");
}
return new DefaultInfo(
- loc,
+ thread.getCallerLocation(),
castNoneToNull(Depset.class, files),
statelessRunfiles,
dataRunfiles,
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
index a8c31f7..41bdca1 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/OutputGroupInfo.java
@@ -289,7 +289,7 @@
}
@Override
- public OutputGroupInfoApi constructor(Dict<?, ?> kwargs, Location loc) throws EvalException {
+ public OutputGroupInfoApi constructor(Dict<?, ?> kwargs) throws EvalException {
Map<String, Object> kwargsMap = kwargs.getContents(String.class, Object.class, "kwargs");
ImmutableMap.Builder<String, NestedSet<Artifact>> builder = ImmutableMap.builder();
@@ -297,7 +297,7 @@
builder.put(
entry.getKey(),
SkylarkRuleConfiguredTargetUtil.convertToOutputGroupValue(
- loc, entry.getKey(), entry.getValue()));
+ entry.getKey(), entry.getValue()));
}
return new OutputGroupInfo(builder.build());
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
index 5067aa7..885636f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TemplateVariableInfo.java
@@ -23,6 +23,7 @@
import com.google.devtools.build.lib.skylarkbuildapi.TemplateVariableInfoApi;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Map;
/** Provides access to make variables from the current fragments. */
@@ -40,11 +41,11 @@
}
@Override
- public TemplateVariableInfo templateVariableInfo(Dict<?, ?> vars, Location loc)
+ public TemplateVariableInfo templateVariableInfo(Dict<?, ?> vars, StarlarkThread thread)
throws EvalException {
Map<String, String> varsMap =
Dict.castSkylarkDictOrNoneToDict(vars, String.class, String.class, "vars");
- return new TemplateVariableInfo(ImmutableMap.copyOf(varsMap), loc);
+ return new TemplateVariableInfo(ImmutableMap.copyOf(varsMap), thread.getCallerLocation());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
index 27cd1f0..7b699bf 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/PlatformInfo.java
@@ -30,6 +30,7 @@
import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.util.Fingerprint;
import com.google.devtools.build.lib.util.StringUtilities;
import java.util.HashMap;
@@ -70,7 +71,7 @@
Object parentUnchecked,
Sequence<?> constraintValuesUnchecked,
Object execPropertiesUnchecked,
- Location location)
+ StarlarkThread thread)
throws EvalException {
PlatformInfo.Builder builder = PlatformInfo.builder();
builder.setLabel(label);
@@ -87,12 +88,12 @@
execPropertiesUnchecked, String.class, String.class, "exec_properties");
builder.setExecProperties(ImmutableMap.copyOf(execProperties));
}
- builder.setLocation(location);
+ builder.setLocation(thread.getCallerLocation());
try {
return builder.build();
} catch (DuplicateConstraintException | ExecPropertiesException e) {
- throw new EvalException(location, e);
+ throw new EvalException(null, e);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
index 412678f..2f23ac5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/platform/ToolchainInfo.java
@@ -28,6 +28,7 @@
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Map;
/**
@@ -54,8 +55,8 @@
}
@Override
- public ToolchainInfo toolchainInfo(Dict<String, Object> kwargs, Location loc) {
- return new ToolchainInfo(kwargs, loc);
+ public ToolchainInfo toolchainInfo(Dict<String, Object> kwargs, StarlarkThread thread) {
+ return new ToolchainInfo(kwargs, thread.getCallerLocation());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java
index 1918c57..a0a82ad 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/Args.java
@@ -38,6 +38,7 @@
import com.google.devtools.build.lib.syntax.Starlark;
import com.google.devtools.build.lib.syntax.StarlarkMutable;
import com.google.devtools.build.lib.syntax.StarlarkSemantics;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashSet;
@@ -173,9 +174,9 @@
Object beforeEach,
Object joinWith,
Object mapFn,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
- throw new EvalException(null, "cannot modify frozen value");
+ throw Starlark.errorf("cannot modify frozen value");
}
@Override
@@ -189,9 +190,9 @@
Boolean uniquify,
Boolean expandDirectories,
Object terminateWith,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
- throw new EvalException(null, "cannot modify frozen value");
+ throw Starlark.errorf("cannot modify frozen value");
}
@Override
@@ -205,9 +206,9 @@
Boolean omitIfEmpty,
Boolean uniquify,
Boolean expandDirectories,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
- throw new EvalException(null, "cannot modify frozen value");
+ throw Starlark.errorf("cannot modify frozen value");
}
@Override
@@ -216,7 +217,7 @@
// TODO(cparsons): Even "frozen" Args may need to use params files.
// If we go down this path, we will need to rename this class and update the documentation
// (as this class no longe behaves exactly like a frozen Args object)
- throw new EvalException(null, "cannot modify frozen value");
+ throw Starlark.errorf("cannot modify frozen value");
}
@Override
@@ -224,7 +225,7 @@
// TODO(cparsons): Even "frozen" Args may need to use params files.
// If we go down this path, we will need to rename this class and update the documentation
// (as this class no longe behaves exactly like a frozen Args object)
- throw new EvalException(null, "cannot modify frozen value");
+ throw Starlark.errorf("cannot modify frozen value");
}
}
@@ -265,41 +266,39 @@
Object beforeEach,
Object joinWith,
Object mapFn,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
- checkMutable(loc);
+ checkMutable(null);
final String argName;
if (value == Starlark.UNBOUND) {
value = argNameOrValue;
argName = null;
} else {
- validateArgName(argNameOrValue, loc);
+ validateArgName(argNameOrValue);
argName = (String) argNameOrValue;
}
if (argName != null) {
commandLine.add(argName);
}
if (value instanceof Depset || value instanceof Sequence) {
- throw new EvalException(
- loc,
- "Args#add doesn't accept vectorized arguments. "
- + "Please use Args#add_all or Args#add_joined.");
+ throw Starlark.errorf(
+ "Args#add doesn't accept vectorized arguments. Please use Args#add_all or"
+ + " Args#add_joined.");
}
if (mapFn != Starlark.NONE) {
- throw new EvalException(
- loc, "Args#add doesn't accept map_fn. Please eagerly map the value.");
+ throw Starlark.errorf("Args#add doesn't accept map_fn. Please eagerly map the value.");
}
if (beforeEach != Starlark.NONE) {
- throw new EvalException(null, "'before_each' is not supported for scalar arguments");
+ throw Starlark.errorf("'before_each' is not supported for scalar arguments");
}
if (joinWith != Starlark.NONE) {
- throw new EvalException(null, "'join_with' is not supported for scalar arguments");
+ throw Starlark.errorf("'join_with' is not supported for scalar arguments");
}
addScalarArg(
value,
format != Starlark.NONE ? (String) format : null,
mapFn != Starlark.NONE ? (BaseFunction) mapFn : null,
- loc);
+ thread.getCallerLocation());
return this;
}
@@ -314,16 +313,16 @@
Boolean uniquify,
Boolean expandDirectories,
Object terminateWith,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
- checkMutable(loc);
+ checkMutable(null);
final String argName;
if (values == Starlark.UNBOUND) {
values = argNameOrValue;
- validateValues(values, loc);
+ validateValues(values);
argName = null;
} else {
- validateArgName(argNameOrValue, loc);
+ validateArgName(argNameOrValue);
argName = (String) argNameOrValue;
}
addVectorArg(
@@ -339,7 +338,7 @@
uniquify,
expandDirectories,
terminateWith != Starlark.NONE ? (String) terminateWith : null,
- loc);
+ thread.getCallerLocation());
return this;
}
@@ -354,16 +353,16 @@
Boolean omitIfEmpty,
Boolean uniquify,
Boolean expandDirectories,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
- checkMutable(loc);
+ checkMutable(null);
final String argName;
if (values == Starlark.UNBOUND) {
values = argNameOrValue;
- validateValues(values, loc);
+ validateValues(values);
argName = null;
} else {
- validateArgName(argNameOrValue, loc);
+ validateArgName(argNameOrValue);
argName = (String) argNameOrValue;
}
addVectorArg(
@@ -379,7 +378,7 @@
uniquify,
expandDirectories,
/* terminateWith= */ null,
- loc);
+ thread.getCallerLocation());
return this;
}
@@ -414,9 +413,9 @@
}
vectorArg = new SkylarkCustomCommandLine.VectorArg.Builder(skylarkList);
}
- validateMapEach(mapEach, loc);
- validateFormatString("format_each", formatEach, loc);
- validateFormatString("format_joined", formatJoined, loc);
+ validateMapEach(mapEach);
+ validateFormatString("format_each", formatEach);
+ validateFormatString("format_joined", formatJoined);
vectorArg
.setLocation(loc)
.setArgName(argName)
@@ -433,28 +432,23 @@
commandLine.add(vectorArg);
}
- private void validateArgName(Object argName, Location loc) throws EvalException {
+ private void validateArgName(Object argName) throws EvalException {
if (!(argName instanceof String)) {
- throw new EvalException(
- loc,
- String.format(
- "expected value of type 'string' for arg name, got '%s'",
- argName.getClass().getSimpleName()));
+ throw Starlark.errorf(
+ "expected value of type 'string' for arg name, got '%s'",
+ argName.getClass().getSimpleName());
}
}
- private void validateValues(Object values, Location loc) throws EvalException {
+ private void validateValues(Object values) throws EvalException {
if (!(values instanceof Sequence || values instanceof Depset)) {
- throw new EvalException(
- loc,
- String.format(
- "expected value of type 'sequence or depset' for values, got '%s'",
- values.getClass().getSimpleName()));
+ throw Starlark.errorf(
+ "expected value of type 'sequence or depset' for values, got '%s'",
+ values.getClass().getSimpleName());
}
}
- private void validateMapEach(@Nullable BaseFunction mapEach, Location loc)
- throws EvalException {
+ private void validateMapEach(@Nullable BaseFunction mapEach) throws EvalException {
if (mapEach == null) {
return;
}
@@ -465,27 +459,25 @@
&& sig.numMandatoryNamedOnly() == 0
&& sig.numOptionalPositionals() == 0;
if (!valid) {
- throw new EvalException(
- loc, "map_each must be a function that accepts a single positional argument");
+ throw Starlark.errorf(
+ "map_each must be a function that accepts a single positional argument");
}
}
- private void validateFormatString(String argumentName, @Nullable String formatStr, Location loc)
+ private void validateFormatString(String argumentName, @Nullable String formatStr)
throws EvalException {
if (formatStr != null
&& !SingleStringArgFormatter.isValid(formatStr)) {
- throw new EvalException(
- loc,
- String.format(
- "Invalid value for parameter \"%s\": Expected string with a single \"%%s\"",
- argumentName));
+ throw Starlark.errorf(
+ "Invalid value for parameter \"%s\": Expected string with a single \"%%s\"",
+ argumentName);
}
}
private void addScalarArg(Object value, String format, BaseFunction mapFn, Location loc)
throws EvalException {
- validateNoDirectory(value, loc);
- validateFormatString("format", format, loc);
+ validateNoDirectory(value);
+ validateFormatString("format", format);
if (format == null && mapFn == null) {
commandLine.add(value);
} else {
@@ -495,10 +487,9 @@
}
}
- private void validateNoDirectory(Object value, Location loc) throws EvalException {
+ private void validateNoDirectory(Object value) throws EvalException {
if (isDirectory(value)) {
- throw new EvalException(
- loc,
+ throw Starlark.errorf(
"Cannot add directories to Args#add since they may expand to multiple values. "
+ "Either use Args#add_all (if you want expansion) "
+ "or args.add(directory.path) (if you do not).");
@@ -512,7 +503,7 @@
@Override
public CommandLineArgsApi useParamsFile(String paramFileArg, Boolean useAlways)
throws EvalException {
- checkMutable(/*loc=*/ null);
+ checkMutable(null);
if (!SingleStringArgFormatter.isValid(paramFileArg)) {
throw new EvalException(
null,
@@ -528,7 +519,7 @@
@Override
public CommandLineArgsApi setParamFileFormat(String format) throws EvalException {
- checkMutable(/*loc=*/ null);
+ checkMutable(null);
final ParameterFileType parameterFileType;
switch (format) {
case "shell":
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/BazelBuildApiGlobals.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/BazelBuildApiGlobals.java
index aa5070e..415a08b 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/BazelBuildApiGlobals.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/BazelBuildApiGlobals.java
@@ -14,10 +14,10 @@
package com.google.devtools.build.lib.analysis.skylark;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.BazelStarlarkContext;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkBuildApiGlobals;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.Starlark;
import com.google.devtools.build.lib.syntax.StarlarkThread;
/**
@@ -28,20 +28,17 @@
@Override
public SkylarkLateBoundDefault<?> configurationField(
- String fragment, String name, Location loc, StarlarkThread thread) throws EvalException {
+ String fragment, String name, StarlarkThread thread) throws EvalException {
BazelStarlarkContext bazelContext = BazelStarlarkContext.from(thread);
Class<?> fragmentClass = bazelContext.getFragmentNameToClass().get(fragment);
-
if (fragmentClass == null) {
- throw new EvalException(
- loc,
- String.format("invalid configuration fragment name '%s'", fragment));
+ throw Starlark.errorf("invalid configuration fragment name '%s'", fragment);
}
try {
return SkylarkLateBoundDefault.forConfigurationField(
fragmentClass, name, bazelContext.getToolsRepository());
} catch (SkylarkLateBoundDefault.InvalidConfigurationFieldException exception) {
- throw new EvalException(loc, exception);
+ throw new EvalException(null, exception);
}
}
}
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 fd89266..0382952 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,7 +46,6 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.TargetUtils;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
@@ -95,9 +94,9 @@
*
* @throws EvalException if actions cannot be registered with this object
*/
- public ActionRegistry asActionRegistry(
- final Location location, SkylarkActionFactory skylarkActionFactory) throws EvalException {
- validateActionCreation(location);
+ public ActionRegistry asActionRegistry(SkylarkActionFactory skylarkActionFactory)
+ throws EvalException {
+ validateActionCreation();
return new ActionRegistry() {
@Override
@@ -116,7 +115,7 @@
}
@Override
- public Artifact declareFile(String filename, Object sibling, Location loc) throws EvalException {
+ public Artifact declareFile(String filename, Object sibling) throws EvalException {
context.checkMutable("actions.declare_file");
PathFragment fragment;
@@ -128,11 +127,9 @@
}
if (!fragment.startsWith(ruleContext.getPackageDirectory())) {
- throw new EvalException(
- loc,
- String.format(
- "the output artifact '%s' is not under package directory '%s' for target '%s'",
- fragment, ruleContext.getPackageDirectory(), ruleContext.getLabel()));
+ throw Starlark.errorf(
+ "the output artifact '%s' is not under package directory '%s' for target '%s'",
+ fragment, ruleContext.getPackageDirectory(), ruleContext.getLabel());
}
return ruleContext.getDerivedArtifact(fragment, newFileRoot());
}
@@ -167,13 +164,11 @@
}
@Override
- public Artifact declareSymlink(String filename, Object sibling, Location location)
- throws EvalException {
+ public Artifact declareSymlink(String filename, Object sibling) throws EvalException {
context.checkMutable("actions.declare_symlink");
if (!ruleContext.getConfiguration().allowUnresolvedSymlinks()) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"actions.declare_symlink() is not allowed; "
+ "use the --experimental_allow_unresolved_symlinks command line option");
}
@@ -191,17 +186,15 @@
ruleContext.getAnalysisEnvironment().getSymlinkArtifact(rootRelativePath, newFileRoot());
if (!result.isSymlink()) {
- throw new EvalException(
- location,
- String.format(
- "'%s' has already been declared as something other than a symlink.", filename));
+ throw Starlark.errorf(
+ "'%s' has already been declared as something other than a symlink.", filename);
}
return result;
}
@Override
- public void doNothing(String mnemonic, Object inputs, Location location) throws EvalException {
+ public void doNothing(String mnemonic, Object inputs) throws EvalException {
context.checkMutable("actions.do_nothing");
NestedSet<Artifact> inputSet =
inputs instanceof Depset
@@ -220,7 +213,7 @@
mnemonic,
SPAWN_INFO,
SpawnInfo.newBuilder().build());
- registerAction(location, action);
+ registerAction(action);
}
@AutoCodec @AutoCodec.VisibleForSerialization
@@ -228,7 +221,7 @@
SpawnInfo.spawnInfo;
@Override
- public void symlink(FileApi output, String path, Location location) throws EvalException {
+ public void symlink(FileApi output, String path) throws EvalException {
context.checkMutable("actions.symlink");
if (!ruleContext.getConfiguration().allowUnresolvedSymlinks()) {
@@ -241,8 +234,7 @@
PathFragment targetPath = PathFragment.create(path);
Artifact outputArtifact = (Artifact) output;
if (!outputArtifact.isSymlink()) {
- throw new EvalException(
- location, "output of symlink action must be created by declare_symlink()");
+ throw Starlark.errorf("output of symlink action must be created by declare_symlink()");
}
Action action =
@@ -251,12 +243,11 @@
outputArtifact,
targetPath,
"creating symlink " + ((Artifact) output).getRootRelativePathString());
- registerAction(location, action);
+ registerAction(action);
}
@Override
- public void write(FileApi output, Object content, Boolean isExecutable, Location location)
- throws EvalException {
+ public void write(FileApi output, Object content, Boolean isExecutable) throws EvalException {
context.checkMutable("actions.write");
final Action action;
if (content instanceof String) {
@@ -275,7 +266,7 @@
} else {
throw new AssertionError("Unexpected type: " + content.getClass().getSimpleName());
}
- registerAction(location, action);
+ registerAction(action);
}
@Override
@@ -291,8 +282,7 @@
Boolean useDefaultShellEnv,
Object envUnchecked,
Object executionRequirementsUnchecked,
- Object inputManifestsUnchecked,
- Location location)
+ Object inputManifestsUnchecked)
throws EvalException {
context.checkMutable("actions.run");
StarlarkAction.Builder builder = new StarlarkAction.Builder();
@@ -326,14 +316,12 @@
envUnchecked,
executionRequirementsUnchecked,
inputManifestsUnchecked,
- location,
builder);
}
- private void validateActionCreation(Location location) throws EvalException {
+ private void validateActionCreation() throws EvalException {
if (ruleContext.getRule().isAnalysisTest()) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"implementation function of a rule with "
+ "analysis_test=true may not register actions. Analysis test rules may only return "
+ "success/failure information via AnalysisTestResultInfo.");
@@ -346,15 +334,14 @@
* <p>Use {@link #getActionConstructionContext()} to obtain the context required to create those
* actions.
*/
- public void registerAction(Location location, ActionAnalysisMetadata... actions)
- throws EvalException {
- validateActionCreation(location);
+ public void registerAction(ActionAnalysisMetadata... actions) throws EvalException {
+ validateActionCreation();
ruleContext.registerAction(actions);
}
/**
* Returns information needed to construct actions that can be registered with {@link
- * #registerAction(Location, ActionAnalysisMetadata...)}.
+ * #registerAction(ActionAnalysisMetadata...)}.
*/
public ActionConstructionContext getActionConstructionContext() {
return ruleContext;
@@ -377,7 +364,6 @@
Object envUnchecked,
Object executionRequirementsUnchecked,
Object inputManifestsUnchecked,
- Location location,
StarlarkThread thread)
throws EvalException {
context.checkMutable("actions.run_shell");
@@ -409,16 +395,14 @@
}
} else if (commandUnchecked instanceof Sequence) {
if (thread.getSemantics().incompatibleRunShellCommandString()) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"'command' must be of type string. passing a sequence of strings as 'command'"
+ " is deprecated. To temporarily disable this check,"
+ " set --incompatible_objc_framework_cleanup=false.");
}
Sequence<?> commandList = (Sequence) commandUnchecked;
if (argumentList.size() > 0) {
- throw new EvalException(location,
- "'arguments' must be empty if 'command' is a sequence of strings");
+ throw Starlark.errorf("'arguments' must be empty if 'command' is a sequence of strings");
}
List<String> command = commandList.getContents(String.class, "command");
builder.setShellCommand(command);
@@ -446,7 +430,6 @@
envUnchecked,
executionRequirementsUnchecked,
inputManifestsUnchecked,
- location,
builder);
}
@@ -492,7 +475,6 @@
Object envUnchecked,
Object executionRequirementsUnchecked,
Object inputManifestsUnchecked,
- Location location,
StarlarkAction.Builder builder)
throws EvalException {
Iterable<Artifact> inputArtifacts;
@@ -507,14 +489,13 @@
List<Artifact> outputArtifacts = outputs.getContents(Artifact.class, "outputs");
if (outputArtifacts.isEmpty()) {
- throw new EvalException(location, "param 'outputs' may not be empty");
+ throw Starlark.errorf("param 'outputs' may not be empty");
}
builder.addOutputs(outputArtifacts);
if (unusedInputsList != Starlark.NONE) {
if (!starlarkSemantics.experimentalStarlarkUnusedInputsList()) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"'unused_inputs_list' attribute is experimental and disabled by default. "
+ "This API is in development and subject to change at any time. "
+ "Use --experimental_starlark_unused_inputs_list to use this experimental API.");
@@ -522,12 +503,10 @@
if (unusedInputsList instanceof Artifact) {
builder.setUnusedInputsList(Optional.of((Artifact) unusedInputsList));
} else {
- throw new EvalException(
- location,
- "expected value of type 'File' for "
- + "a member of parameter 'unused_inputs_list' but got "
- + EvalUtils.getDataTypeName(unusedInputsList)
- + " instead");
+ throw Starlark.errorf(
+ "expected value of type 'File' for a member of parameter 'unused_inputs_list' but got"
+ + " %s instead",
+ EvalUtils.getDataTypeName(unusedInputsList));
}
}
@@ -578,18 +557,16 @@
.map(Artifact::getExecPathString)
.map(s -> "'" + s + "'")
.collect(toList()));
- throw new EvalException(
- location,
- String.format(
- "Found tool(s) %s in inputs. "
- + "A tool is an input with executable=True set. "
- + "All tools should be passed using the 'tools' "
- + "argument instead of 'inputs' in order to make their runfiles available "
- + "to the action. This safety check will not be performed once the action "
- + "is modified to take a 'tools' argument. "
- + "To temporarily disable this check, "
- + "set --incompatible_no_support_tools_in_action_inputs=false.",
- toolsAsString));
+ throw Starlark.errorf(
+ "Found tool(s) %s in inputs. "
+ + "A tool is an input with executable=True set. "
+ + "All tools should be passed using the 'tools' "
+ + "argument instead of 'inputs' in order to make their runfiles available "
+ + "to the action. This safety check will not be performed once the action "
+ + "is modified to take a 'tools' argument. "
+ + "To temporarily disable this check, "
+ + "set --incompatible_no_support_tools_in_action_inputs=false.",
+ toolsAsString);
}
} else {
// Full legacy support -- add tools from inputs
@@ -631,7 +608,7 @@
}
}
// Always register the action
- registerAction(location, builder.build(ruleContext));
+ registerAction(builder.build(ruleContext));
}
private String getMnemonic(Object mnemonicUnchecked) {
@@ -648,11 +625,7 @@
@Override
public void expandTemplate(
- FileApi template,
- FileApi output,
- Dict<?, ?> substitutionsUnchecked,
- Boolean executable,
- Location location)
+ FileApi template, FileApi output, Dict<?, ?> substitutionsUnchecked, Boolean executable)
throws EvalException {
context.checkMutable("actions.expand_template");
ImmutableList.Builder<Substitution> substitutionsBuilder = ImmutableList.builder();
@@ -674,7 +647,7 @@
(Artifact) output,
substitutionsBuilder.build(),
executable);
- registerAction(location, action);
+ registerAction(action);
}
/**
@@ -689,7 +662,7 @@
@Override
public Args args(StarlarkThread thread) {
- return Args.newArgs(thread.mutability(), starlarkSemantics);
+ return Args.newArgs(thread.mutability(), thread.getSemantics());
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
index ae8d23e..c8aa38e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -26,7 +26,6 @@
import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet;
import com.google.devtools.build.lib.packages.Attribute.ImmutableAttributeFactory;
@@ -92,22 +91,21 @@
}
private static ImmutableAttributeFactory createAttributeFactory(
- Type<?> type, String doc, Map<String, Object> arguments, Location loc, StarlarkThread thread)
+ Type<?> type, String doc, Map<String, Object> arguments, StarlarkThread thread)
throws EvalException {
// We use an empty name now so that we can set it later.
// This trick makes sense only in the context of Skylark (builtin rules should not use it).
- return createAttributeFactory(type, doc, arguments, loc, thread, "");
+ return createAttributeFactory(type, doc, arguments, thread, "");
}
private static ImmutableAttributeFactory createAttributeFactory(
Type<?> type,
String doc,
Map<String, Object> arguments,
- Location loc,
StarlarkThread thread,
String name)
throws EvalException {
- return createAttribute(type, doc, arguments, loc, thread, name).buildPartial();
+ return createAttribute(type, doc, arguments, thread, name).buildPartial();
}
@SuppressWarnings("unchecked")
@@ -115,7 +113,6 @@
Type<?> type,
String doc,
Map<String, Object> arguments,
- Location loc,
StarlarkThread thread,
String name)
throws EvalException {
@@ -135,7 +132,7 @@
// We solve this problem by asking the StarlarkCallbackHelper for the parameter names used
// in the function definition, which must be the names of attributes used by the callback.
builder.value(
- new SkylarkComputedDefaultTemplate(type, callback.getParameterNames(), callback, loc));
+ new SkylarkComputedDefaultTemplate(type, callback.getParameterNames(), callback));
} else if (defaultValue instanceof SkylarkLateBoundDefault) {
builder.value((SkylarkLateBoundDefault) defaultValue); // unchecked cast
} else {
@@ -290,7 +287,7 @@
List<SkylarkAspect> aspects = ((Sequence<?>) obj).getContents(SkylarkAspect.class, "aspects");
for (SkylarkAspect aspect : aspects) {
- aspect.attachToAttribute(builder, loc);
+ aspect.attachToAttribute(builder);
}
}
@@ -303,7 +300,6 @@
* providers (then the result is the list of sets).
*
* @param argumentName used in error messages.
- * @param location location for error messages.
*/
static ImmutableList<ImmutableSet<SkylarkProviderIdentifier>> buildProviderPredicate(
Sequence<?> obj, String argumentName) throws EvalException {
@@ -389,10 +385,10 @@
}
private static Descriptor createAttrDescriptor(
- String name, Map<String, Object> kwargs, Type<?> type, Location loc, StarlarkThread thread)
+ String name, Map<String, Object> kwargs, Type<?> type, StarlarkThread thread)
throws EvalException {
try {
- return new Descriptor(name, createAttributeFactory(type, null, kwargs, loc, thread));
+ return new Descriptor(name, createAttributeFactory(type, null, kwargs, thread));
} catch (ConversionException e) {
throw new EvalException(null, e.getMessage());
}
@@ -415,7 +411,7 @@
}
private static Descriptor createNonconfigurableAttrDescriptor(
- String name, Map<String, Object> kwargs, Type<?> type, Location loc, StarlarkThread thread)
+ String name, Map<String, Object> kwargs, Type<?> type, StarlarkThread thread)
throws EvalException {
String whyNotConfigurableReason =
Preconditions.checkNotNull(maybeGetNonConfigurableReason(type), type);
@@ -424,7 +420,7 @@
// This trick makes sense only in the context of Skylark (builtin rules should not use it).
return new Descriptor(
name,
- createAttribute(type, null, kwargs, loc, thread, "")
+ createAttribute(type, null, kwargs, thread, "")
.nonconfigurable(whyNotConfigurableReason)
.buildPartial());
} catch (ConversionException e) {
@@ -443,7 +439,6 @@
String doc,
Boolean mandatory,
Sequence<?> values,
- Location loc,
StarlarkThread thread)
throws EvalException {
// TODO(bazel-team): Replace literal strings with constants.
@@ -452,7 +447,6 @@
"int",
optionMap(DEFAULT_ARG, defaultValue, MANDATORY_ARG, mandatory, VALUES_ARG, values),
Type.INTEGER,
- loc,
thread);
}
@@ -462,7 +456,6 @@
String doc,
Boolean mandatory,
Sequence<?> values,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.string");
@@ -470,7 +463,6 @@
"string",
optionMap(DEFAULT_ARG, defaultValue, MANDATORY_ARG, mandatory, VALUES_ARG, values),
Type.STRING,
- loc,
thread);
}
@@ -487,7 +479,6 @@
Boolean singleFile,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.label");
@@ -517,7 +508,6 @@
cfg,
ASPECTS_ARG,
aspects),
- loc,
thread,
"label");
return new Descriptor("label", attribute);
@@ -533,7 +523,6 @@
Boolean allowEmpty,
Sequence<?> defaultValue,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.string_list");
@@ -549,7 +538,6 @@
ALLOW_EMPTY_ARG,
allowEmpty),
Type.STRING_LIST,
- loc,
thread);
}
@@ -560,7 +548,6 @@
Boolean allowEmpty,
Sequence<?> defaultValue,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.int_list");
@@ -576,7 +563,6 @@
ALLOW_EMPTY_ARG,
allowEmpty),
Type.INTEGER_LIST,
- loc,
thread);
}
@@ -593,7 +579,6 @@
Boolean nonEmpty,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.label_list");
@@ -621,7 +606,7 @@
aspects);
try {
ImmutableAttributeFactory attribute =
- createAttributeFactory(BuildType.LABEL_LIST, doc, kwargs, loc, thread, "label_list");
+ createAttributeFactory(BuildType.LABEL_LIST, doc, kwargs, thread, "label_list");
return new Descriptor("label_list", attribute);
} catch (EvalException e) {
throw new EvalException(null, e.getMessage(), e);
@@ -641,7 +626,6 @@
Boolean nonEmpty,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.label_keyed_string_dict");
@@ -673,7 +657,6 @@
BuildType.LABEL_KEYED_STRING_DICT,
doc,
kwargs,
- loc,
thread,
"label_keyed_string_dict");
return new Descriptor("label_keyed_string_dict", attribute);
@@ -684,14 +667,13 @@
@Override
public Descriptor boolAttribute(
- Boolean defaultValue, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
+ Boolean defaultValue, String doc, Boolean mandatory, StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.bool");
return createAttrDescriptor(
"bool",
optionMap(DEFAULT_ARG, defaultValue, MANDATORY_ARG, mandatory),
Type.BOOLEAN,
- loc,
thread);
}
@@ -700,7 +682,6 @@
Object defaultValue, // Label | StarlarkFunction
String doc,
Boolean mandatory,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.output");
@@ -709,7 +690,6 @@
"output",
optionMap(DEFAULT_ARG, defaultValue, MANDATORY_ARG, mandatory),
BuildType.OUTPUT,
- loc,
thread);
}
@@ -720,7 +700,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.output_list");
@@ -737,7 +716,6 @@
ALLOW_EMPTY_ARG,
allowEmpty),
BuildType.OUTPUT_LIST,
- loc,
thread);
}
@@ -748,7 +726,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.string_dict");
@@ -764,7 +741,6 @@
ALLOW_EMPTY_ARG,
allowEmpty),
Type.STRING_DICT,
- loc,
thread);
}
@@ -775,7 +751,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.string_list_dict");
@@ -791,20 +766,18 @@
ALLOW_EMPTY_ARG,
allowEmpty),
Type.STRING_LIST_DICT,
- loc,
thread);
}
@Override
public Descriptor licenseAttribute(
- Object defaultValue, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
+ Object defaultValue, String doc, Boolean mandatory, StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("attr.license");
return createNonconfigurableAttrDescriptor(
"license",
optionMap(DEFAULT_ARG, defaultValue, MANDATORY_ARG, mandatory),
BuildType.LICENSE,
- loc,
thread);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkErrorReporter.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkErrorReporter.java
index 981aeec..6200946 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkErrorReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkErrorReporter.java
@@ -13,7 +13,6 @@
// limitations under the License
package com.google.devtools.build.lib.analysis.skylark;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
import com.google.devtools.build.lib.packages.RuleErrorConsumer;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -30,15 +29,13 @@
*/
public class SkylarkErrorReporter implements AutoCloseable, RuleErrorConsumer {
private final RuleErrorConsumer ruleErrorConsumer;
- private final Location location;
- public static SkylarkErrorReporter from(RuleErrorConsumer ruleErrorConsumer, Location location) {
- return new SkylarkErrorReporter(ruleErrorConsumer, location);
+ public static SkylarkErrorReporter from(RuleErrorConsumer ruleErrorConsumer) {
+ return new SkylarkErrorReporter(ruleErrorConsumer);
}
- private SkylarkErrorReporter(RuleErrorConsumer ruleErrorConsumer, Location location) {
+ private SkylarkErrorReporter(RuleErrorConsumer ruleErrorConsumer) {
this.ruleErrorConsumer = ruleErrorConsumer;
- this.location = location;
}
@Override
@@ -46,7 +43,7 @@
try {
assertNoErrors();
} catch (RuleErrorException e) {
- throw new EvalException(location, "error occurred while evaluating builtin function", e);
+ throw new EvalException(null, "error occurred while evaluating builtin function", e);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index d7a212a9..b07bb56 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -251,7 +251,7 @@
};
@Override
- public Provider provider(String doc, Object fields, Location location) throws EvalException {
+ public Provider provider(String doc, Object fields, StarlarkThread thread) throws EvalException {
Collection<String> fieldNames = null;
if (fields instanceof Sequence) {
@SuppressWarnings("unchecked")
@@ -261,7 +261,7 @@
fields,
Sequence.class,
String.class,
- location,
+ null,
"Expected list of strings or dictionary of string -> string for 'fields'");
fieldNames = list;
} else if (fields instanceof Dict) {
@@ -271,7 +271,7 @@
"Expected list of strings or dictionary of string -> string for 'fields'");
fieldNames = dict.keySet();
}
- return SkylarkProvider.createUnexportedSchemaful(fieldNames, location);
+ return SkylarkProvider.createUnexportedSchemaful(fieldNames, thread.getCallerLocation());
}
// TODO(bazel-team): implement attribute copy and other rule properties
@@ -293,7 +293,6 @@
Object analysisTest,
Object buildSetting,
Object cfg,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext bazelContext = BazelStarlarkContext.from(thread);
@@ -319,7 +318,6 @@
if (executable || test) {
addAttribute(
- loc,
builder,
attr("$is_executable", BOOLEAN)
.value(true)
@@ -334,7 +332,7 @@
new StarlarkCallbackHelper(
(StarlarkFunction) implicitOutputs, thread.getSemantics(), bazelContext);
builder.setImplicitOutputsFunction(
- new SkylarkImplicitOutputsFunctionWithCallback(callback, loc));
+ new SkylarkImplicitOutputsFunctionWithCallback(callback, thread.getCallerLocation()));
} else {
builder.setImplicitOutputsFunction(
new SkylarkImplicitOutputsFunctionWithMap(
@@ -366,8 +364,7 @@
bazelContext.getRepoMapping()));
if (!buildSetting.equals(Starlark.NONE) && !cfg.equals(Starlark.NONE)) {
- throw new EvalException(
- null,
+ throw Starlark.errorf(
"Build setting rules cannot use the `cfg` param to apply transitions to themselves.");
}
if (!buildSetting.equals(Starlark.NONE)) {
@@ -375,8 +372,7 @@
}
if (!cfg.equals(Starlark.NONE)) {
if (!(cfg instanceof StarlarkDefinedConfigTransition)) {
- throw new EvalException(
- null,
+ throw Starlark.errorf(
"`cfg` must be set to a transition object initialized by the transition() function.");
}
StarlarkDefinedConfigTransition starlarkDefinedConfigTransition =
@@ -387,12 +383,10 @@
for (Object o : providesArg) {
if (!SkylarkAttr.isProvider(o)) {
- throw new EvalException(
- null,
- String.format(
- "Illegal argument: element in 'provides' is of unexpected type. "
- + "Should be list of providers, but got item of type %s.",
- EvalUtils.getDataTypeName(o, true)));
+ throw Starlark.errorf(
+ "Illegal argument: element in 'provides' is of unexpected type. "
+ + "Should be list of providers, but got item of type %s.",
+ EvalUtils.getDataTypeName(o, true));
}
}
for (SkylarkProviderIdentifier skylarkProvider :
@@ -404,16 +398,15 @@
builder.addExecutionPlatformConstraints(
collectConstraintLabels(
execCompatibleWith.getContents(String.class, "exec_compatile_with"),
- loc,
bazelContext.getRepoMapping()));
}
- return new SkylarkRuleFunction(builder, type, attributes, loc);
+ return new SkylarkRuleFunction(builder, type, attributes, thread.getCallerLocation());
}
private static void checkAttributeName(String name) throws EvalException {
if (!Identifier.isValid(name)) {
- throw new EvalException(null, "attribute name `" + name + "` is not a valid identifier.");
+ throw Starlark.errorf("attribute name `%s` is not a valid identifier.", name);
}
}
@@ -434,12 +427,12 @@
return attributes.build();
}
- private static void addAttribute(
- Location location, RuleClass.Builder builder, Attribute attribute) throws EvalException {
+ private static void addAttribute(RuleClass.Builder builder, Attribute attribute)
+ throws EvalException {
try {
builder.addOrOverrideAttribute(attribute);
} catch (IllegalArgumentException ex) {
- throw new EvalException(location, ex);
+ throw new EvalException(null, ex);
}
}
@@ -463,7 +456,6 @@
private static ImmutableList<Label> collectConstraintLabels(
Iterable<String> rawLabels,
- Location loc,
ImmutableMap<RepositoryName, RepositoryName> mapping)
throws EvalException {
ImmutableList.Builder<Label> constraintLabels = new ImmutableList.Builder<>();
@@ -472,8 +464,7 @@
Label constraintLabel = Label.parseAbsolute(rawLabel, mapping);
constraintLabels.add(constraintLabel);
} catch (LabelSyntaxException e) {
- throw new EvalException(
- loc, String.format("Unable to parse constraint %s: %s", rawLabel, e.getMessage()), e);
+ throw Starlark.errorf("Unable to parse constraint %s: %s", rawLabel, e.getMessage());
}
}
@@ -492,7 +483,6 @@
Sequence<?> toolchains,
String doc,
Boolean applyToGeneratingRules,
- Location loc,
StarlarkThread thread)
throws EvalException {
ImmutableList.Builder<String> attrAspects = ImmutableList.builder();
@@ -633,8 +623,7 @@
}
@Override
- public Object call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ public Object call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException, InterruptedException, ConversionException {
if (!args.isEmpty()) {
throw new EvalException(null, "unexpected positional arguments");
@@ -651,11 +640,9 @@
attribute.getRequiredAspectParameters().entrySet()) {
for (String required : attrRequirements.getValue()) {
if (!ruleClass.hasAttr(required, Type.STRING)) {
- throw new EvalException(definitionLocation, String.format(
+ throw Starlark.errorf(
"Aspect %s requires rule %s to specify attribute '%s' with type string.",
- attrRequirements.getKey(),
- ruleClass.getName(),
- required));
+ attrRequirements.getKey(), ruleClass.getName(), required);
}
}
}
@@ -672,9 +659,14 @@
+ "Rules may be instantiated only in a BUILD thread.");
}
RuleFactory.createAndAddRule(
- pkgContext, ruleClass, attributeValues, loc, thread, new AttributeContainer(ruleClass));
+ pkgContext,
+ ruleClass,
+ attributeValues,
+ thread.getCallerLocation(),
+ thread,
+ new AttributeContainer(ruleClass));
} catch (InvalidRuleException | NameConflictException e) {
- throw new EvalException(loc, e.getMessage());
+ throw new EvalException(null, e.getMessage());
}
return Starlark.NONE;
}
@@ -740,7 +732,7 @@
hasFunctionTransitionWhitelist = true;
builder.setHasFunctionTransitionWhitelist();
}
- addAttribute(definitionLocation, builder, attr);
+ addAttribute(builder, attr);
}
// TODO(b/121385274): remove when we stop whitelisting starlark transitions
if (hasStarlarkDefinedTransition) {
@@ -788,8 +780,7 @@
}
@Override
- public Label label(
- String labelString, Boolean relativeToCallerRepository, Location loc, StarlarkThread thread)
+ public Label label(String labelString, Boolean relativeToCallerRepository, StarlarkThread thread)
throws EvalException {
BazelStarlarkContext context = BazelStarlarkContext.from(thread);
@@ -860,7 +851,7 @@
}
return labelCache.get(labelString);
} catch (LabelValidator.BadLabelException | LabelSyntaxException | ExecutionException e) {
- throw new EvalException(loc, "Illegal absolute label syntax: " + labelString);
+ throw Starlark.errorf("Illegal absolute label syntax: %s", labelString);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
index ea2fb0f..11cbbbd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
@@ -237,15 +237,14 @@
}
}
- private static void addOutputGroups(Object value, Location loc,
- RuleConfiguredTargetBuilder builder)
+ private static void addOutputGroups(Object value, RuleConfiguredTargetBuilder builder)
throws EvalException {
Map<String, StarlarkValue> outputGroups =
SkylarkType.castMap(value, String.class, StarlarkValue.class, "output_groups");
for (String outputGroup : outputGroups.keySet()) {
StarlarkValue objects = outputGroups.get(outputGroup);
- NestedSet<Artifact> artifacts = convertToOutputGroupValue(loc, outputGroup, objects);
+ NestedSet<Artifact> artifacts = convertToOutputGroupValue(outputGroup, objects);
builder.addOutputGroup(outputGroup, artifacts);
}
}
@@ -270,7 +269,6 @@
}
InstrumentedFilesInfo instrumentedFilesProvider =
CoverageCommon.createInstrumentedFilesInfo(
- insStruct.getCreationLoc(),
ruleContext,
sourceAttributes,
dependencyAttributes,
@@ -278,8 +276,8 @@
builder.addNativeDeclaredProvider(instrumentedFilesProvider);
}
- public static NestedSet<Artifact> convertToOutputGroupValue(Location loc, String outputGroup,
- Object objects) throws EvalException {
+ public static NestedSet<Artifact> convertToOutputGroupValue(String outputGroup, Object objects)
+ throws EvalException {
String typeErrorMessage =
"Output group '%s' is of unexpected type. "
+ "Should be list or set of Files, but got '%s' instead.";
@@ -290,12 +288,10 @@
if (o instanceof Artifact) {
nestedSetBuilder.add((Artifact) o);
} else {
- throw new EvalException(
- loc,
- String.format(
- typeErrorMessage,
- outputGroup,
- "list with an element of " + EvalUtils.getDataTypeNameFromClass(o.getClass())));
+ throw Starlark.errorf(
+ typeErrorMessage,
+ outputGroup,
+ "list with an element of " + EvalUtils.getDataTypeNameFromClass(o.getClass()));
}
}
return nestedSetBuilder.build();
@@ -305,7 +301,7 @@
objects,
Depset.class,
Artifact.class,
- loc,
+ null,
typeErrorMessage,
outputGroup,
EvalUtils.getDataTypeName(objects, true));
@@ -313,7 +309,7 @@
return artifactsSet.getSet(Artifact.class);
} catch (Depset.TypeException exception) {
throw new EvalException(
- loc,
+ null,
String.format(
typeErrorMessage,
outputGroup,
@@ -420,7 +416,7 @@
+ "' should be specified in DefaultInfo if it's provided explicitly.");
}
} else if (field.equals("output_groups")) {
- addOutputGroups(oldStyleProviders.getValue(field), loc, builder);
+ addOutputGroups(oldStyleProviders.getValue(field), builder);
} else if (field.equals("instrumented_files")) {
StructImpl insStruct = cast("instrumented_files", oldStyleProviders, StructImpl.class, loc);
addInstrumentedFiles(insStruct, context.getRuleContext(), builder);
@@ -536,7 +532,7 @@
executable = defaultInfo.getExecutable();
} else {
- // Rule implementations aren't reqiured to return default-info fields via a DefaultInfo
+ // Rule implementations aren't required to return default-info fields via a DefaultInfo
// provider. They can return them as fields on the returned struct. For example,
// 'return struct(executable = foo)' instead of 'return DefaultInfo(executable = foo)'.
// TODO(cparsons): Look into deprecating this option.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 3fbfe85..0c4cae2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -737,11 +737,8 @@
}
@Override
- public Artifact newFile(Object var1,
- Object var2,
- Object fileSuffix,
- Location loc) throws EvalException {
- checkDeprecated("ctx.actions.declare_file", "ctx.new_file", null, starlarkSemantics);
+ public Artifact newFile(Object var1, Object var2, Object fileSuffix) throws EvalException {
+ checkDeprecated("ctx.actions.declare_file", "ctx.new_file", starlarkSemantics);
checkMutable("new_file");
// Determine which of new_file's four signatures is being used. Yes, this is terrible.
@@ -749,11 +746,10 @@
if (fileSuffix != Starlark.UNBOUND) {
// new_file(file_root, sibling_file, suffix)
ArtifactRoot root =
- assertTypeForNewFile(var1, ArtifactRoot.class, loc,
- "expected first param to be of type 'root'");
+ assertTypeForNewFile(
+ var1, ArtifactRoot.class, "expected first param to be of type 'root'");
Artifact siblingFile =
- assertTypeForNewFile(var2, Artifact.class, loc,
- "expected second param to be of type 'File'");
+ assertTypeForNewFile(var2, Artifact.class, "expected second param to be of type 'File'");
PathFragment original = siblingFile.getRootRelativePath();
PathFragment fragment = original.replaceName(original.getBaseName() + fileSuffix);
return ruleContext.getDerivedArtifact(fragment, root);
@@ -761,13 +757,12 @@
} else if (var2 == Starlark.UNBOUND) {
// new_file(filename)
String filename =
- assertTypeForNewFile(var1, String.class, loc,
- "expected first param to be of type 'string'");
- return actionFactory.declareFile(filename, Starlark.NONE, loc);
+ assertTypeForNewFile(var1, String.class, "expected first param to be of type 'string'");
+ return actionFactory.declareFile(filename, Starlark.NONE);
} else {
- String filename = assertTypeForNewFile(var2, String.class, loc,
- "expected second param to be of type 'string'");
+ String filename =
+ assertTypeForNewFile(var2, String.class, "expected second param to be of type 'string'");
if (var1 instanceof ArtifactRoot) {
// new_file(root, filename)
ArtifactRoot root = (ArtifactRoot) var1;
@@ -776,27 +771,27 @@
} else {
// new_file(sibling_file, filename)
Artifact siblingFile =
- assertTypeForNewFile(var1, Artifact.class, loc,
- "expected first param to be of type 'File' or 'root'");
+ assertTypeForNewFile(
+ var1, Artifact.class, "expected first param to be of type 'File' or 'root'");
- return actionFactory.declareFile(filename, siblingFile, loc);
+ return actionFactory.declareFile(filename, siblingFile);
}
}
}
- private static <T> T assertTypeForNewFile(Object obj, Class<T> type, Location loc,
- String errorMessage) throws EvalException {
+ private static <T> T assertTypeForNewFile(Object obj, Class<T> type, String errorMessage)
+ throws EvalException {
if (type.isInstance(obj)) {
return type.cast(obj);
} else {
- throw new EvalException(loc, errorMessage);
+ throw new EvalException(null, errorMessage);
}
}
@Override
public Artifact newDirectory(String name, Object siblingArtifactUnchecked) throws EvalException {
checkDeprecated(
- "ctx.actions.declare_directory", "ctx.experimental_new_directory", null, starlarkSemantics);
+ "ctx.actions.declare_directory", "ctx.experimental_new_directory", starlarkSemantics);
checkMutable("experimental_new_directory");
return actionFactory.declareDirectory(name, siblingArtifactUnchecked);
}
@@ -890,14 +885,13 @@
Object envUnchecked,
Object executionRequirementsUnchecked,
Object inputManifestsUnchecked,
- Location loc,
StarlarkThread thread)
throws EvalException {
checkDeprecated(
- "ctx.actions.run or ctx.actions.run_shell", "ctx.action", loc, thread.getSemantics());
+ "ctx.actions.run or ctx.actions.run_shell", "ctx.action", thread.getSemantics());
checkMutable("action");
if ((commandUnchecked == Starlark.NONE) == (executableUnchecked == Starlark.NONE)) {
- throw new EvalException(loc, "You must specify either 'command' or 'executable' argument");
+ throw Starlark.errorf("You must specify either 'command' or 'executable' argument");
}
boolean hasCommand = commandUnchecked != Starlark.NONE;
if (!hasCommand) {
@@ -914,8 +908,7 @@
useDefaultShellEnv,
envUnchecked,
executionRequirementsUnchecked,
- inputManifestsUnchecked,
- loc);
+ inputManifestsUnchecked);
} else {
actions()
@@ -931,15 +924,14 @@
envUnchecked,
executionRequirementsUnchecked,
inputManifestsUnchecked,
- loc,
thread);
}
return Starlark.NONE;
}
@Override
- public String expandLocation(
- String input, Sequence<?> targets, Location loc, StarlarkThread thread) throws EvalException {
+ public String expandLocation(String input, Sequence<?> targets, StarlarkThread thread)
+ throws EvalException {
checkMutable("expand_location");
try {
return LocationExpander.withExecPaths(
@@ -947,26 +939,26 @@
makeLabelMap(targets.getContents(TransitiveInfoCollection.class, "targets")))
.expand(input);
} catch (IllegalStateException ise) {
- throw new EvalException(loc, ise);
+ throw new EvalException(null, ise);
}
}
@Override
public NoneType fileAction(
- FileApi output, String content, Boolean executable, Location loc, StarlarkThread thread)
+ FileApi output, String content, Boolean executable, StarlarkThread thread)
throws EvalException {
- checkDeprecated("ctx.actions.write", "ctx.file_action", loc, thread.getSemantics());
+ checkDeprecated("ctx.actions.write", "ctx.file_action", thread.getSemantics());
checkMutable("file_action");
- actions().write(output, content, executable, loc);
+ actions().write(output, content, executable);
return Starlark.NONE;
}
@Override
- public NoneType emptyAction(String mnemonic, Object inputs, Location loc, StarlarkThread thread)
+ public NoneType emptyAction(String mnemonic, Object inputs, StarlarkThread thread)
throws EvalException {
- checkDeprecated("ctx.actions.do_nothing", "ctx.empty_action", loc, thread.getSemantics());
+ checkDeprecated("ctx.actions.do_nothing", "ctx.empty_action", thread.getSemantics());
checkMutable("empty_action");
- actions().doNothing(mnemonic, inputs, loc);
+ actions().doNothing(mnemonic, inputs);
return Starlark.NONE;
}
@@ -976,13 +968,11 @@
FileApi output,
Dict<?, ?> substitutionsUnchecked,
Boolean executable,
- Location loc,
StarlarkThread thread)
throws EvalException {
- checkDeprecated(
- "ctx.actions.expand_template", "ctx.template_action", loc, thread.getSemantics());
+ checkDeprecated("ctx.actions.expand_template", "ctx.template_action", thread.getSemantics());
checkMutable("template_action");
- actions().expandTemplate(template, output, substitutionsUnchecked, executable, loc);
+ actions().expandTemplate(template, output, substitutionsUnchecked, executable);
return Starlark.NONE;
}
@@ -993,8 +983,7 @@
Boolean collectData,
Boolean collectDefault,
Dict<?, ?> symlinks,
- Dict<?, ?> rootSymlinks,
- Location loc)
+ Dict<?, ?> rootSymlinks)
throws EvalException, ConversionException {
checkMutable("runfiles");
Runfiles.Builder builder =
@@ -1045,12 +1034,11 @@
Sequence<?> tools,
Dict<?, ?> labelDictUnchecked,
Dict<?, ?> executionRequirementsUnchecked,
- Location loc,
StarlarkThread thread)
throws ConversionException, EvalException {
checkMutable("resolve_command");
Label ruleLabel = getLabel();
- Map<Label, Iterable<Artifact>> labelDict = checkLabelDict(labelDictUnchecked, loc);
+ Map<Label, Iterable<Artifact>> labelDict = checkLabelDict(labelDictUnchecked);
// The best way to fix this probably is to convert CommandHelper to Skylark.
CommandHelper helper =
CommandHelper.builder(getRuleContext())
@@ -1117,13 +1105,13 @@
* corresponding map where any sets are replaced by iterables.
*/
// TODO(bazel-team): find a better way to typecheck this argument.
- private static Map<Label, Iterable<Artifact>> checkLabelDict(Map<?, ?> labelDict, Location loc)
+ private static Map<Label, Iterable<Artifact>> checkLabelDict(Map<?, ?> labelDict)
throws EvalException {
Map<Label, Iterable<Artifact>> convertedMap = new HashMap<>();
for (Map.Entry<?, ?> entry : labelDict.entrySet()) {
Object key = entry.getKey();
if (!(key instanceof Label)) {
- throw new EvalException(loc, Starlark.format("invalid key %r in 'label_dict'", key));
+ throw Starlark.errorf("invalid key %s in 'label_dict'", Starlark.repr(key));
}
ImmutableList.Builder<Artifact> files = ImmutableList.builder();
Object val = entry.getValue();
@@ -1131,15 +1119,13 @@
if (val instanceof Iterable) {
valIter = (Iterable<?>) val;
} else {
- throw new EvalException(
- loc,
- Starlark.format(
- "invalid value %r in 'label_dict': expected iterable, but got '%s'",
- val, EvalUtils.getDataTypeName(val)));
+ throw Starlark.errorf(
+ "invalid value %s in 'label_dict': expected iterable, but got '%s'",
+ Starlark.repr(val), EvalUtils.getDataTypeName(val));
}
for (Object file : valIter) {
if (!(file instanceof Artifact)) {
- throw new EvalException(loc, Starlark.format("invalid value %r in 'label_dict'", val));
+ throw Starlark.errorf("invalid value %s in 'label_dict'", Starlark.repr(val));
}
files.add((Artifact) file);
}
@@ -1151,18 +1137,13 @@
/** suffix of script to be used in case the command is too long to fit on a single line */
private static final String SCRIPT_SUFFIX = ".script.sh";
- private static void checkDeprecated(
- String newApi, String oldApi, Location loc, StarlarkSemantics semantics)
+ private static void checkDeprecated(String newApi, String oldApi, StarlarkSemantics semantics)
throws EvalException {
if (semantics.incompatibleNewActionsApi()) {
- throw new EvalException(
- loc,
- "Use "
- + newApi
- + " instead of "
- + oldApi
- + ". \n"
- + "Use --incompatible_new_actions_api=false to temporarily disable this check.");
+ throw Starlark.errorf(
+ "Use %s instead of %s. \n"
+ + "Use --incompatible_new_actions_api=false to temporarily disable this check.",
+ newApi, oldApi);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
index f8c7a7a..ecd1252 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageCommon.java
@@ -20,7 +20,6 @@
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.test.CoverageCommonApi;
import com.google.devtools.build.lib.skylarkbuildapi.test.InstrumentedFilesInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -42,8 +41,7 @@
SkylarkRuleContext skylarkRuleContext,
Sequence<?> sourceAttributes, // <String>
Sequence<?> dependencyAttributes, // <String>
- Object extensions,
- Location location)
+ Object extensions)
throws EvalException {
List<String> extensionsList =
extensions == Starlark.NONE
@@ -51,7 +49,6 @@
: Sequence.castList((List<?>) extensions, String.class, "extensions");
return createInstrumentedFilesInfo(
- location,
skylarkRuleContext.getRuleContext(),
sourceAttributes.getContents(String.class, "source_attributes"),
dependencyAttributes.getContents(String.class, "dependency_attributes"),
@@ -64,7 +61,6 @@
* example, the instrumented sources are determined given the values of the attributes named in
* {@code sourceAttributes} given by the {@code ruleContext}.
*
- * @param location the Starlark location that the instrumentation specification was defined
* @param ruleContext the rule context
* @param sourceAttributes a list of attribute names which contain source files for the rule
* @param dependencyAttributes a list of attribute names which contain dependencies that might
@@ -74,7 +70,6 @@
* extensions listed in {@code extensions} will be used
*/
public static InstrumentedFilesInfo createInstrumentedFilesInfo(
- Location location,
RuleContext ruleContext,
List<String> sourceAttributes,
List<String> dependencyAttributes,
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
index 17efe82..39540c3 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContext.java
@@ -34,7 +34,6 @@
import com.google.devtools.build.lib.bazel.repository.downloader.HttpUtils;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.ExtendedEventHandler.FetchProgress;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.StructImpl;
@@ -57,6 +56,7 @@
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.Starlark;
import com.google.devtools.build.lib.syntax.StarlarkSemantics;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.util.OS;
import com.google.devtools.build.lib.util.OsUtils;
import com.google.devtools.build.lib.util.StringUtilities;
@@ -172,11 +172,10 @@
return skylarkPath;
}
}
- throw new EvalException(
- Location.BUILTIN,
- method
- + " can only be applied to external paths"
- + " (that is, outside the workspace or ignored in .bazelignore)");
+ throw Starlark.errorf(
+ "%s can only be applied to external paths (that is, outside the workspace or ignored in"
+ + " .bazelignore)",
+ method);
}
@Override
@@ -197,7 +196,7 @@
} else if (path instanceof SkylarkPath) {
return (SkylarkPath) path;
} else {
- throw new EvalException(Location.BUILTIN, method + " can only take a string or a label.");
+ throw Starlark.errorf("%s can only take a string or a label.", method);
}
}
@@ -227,13 +226,16 @@
}
@Override
- public void symlink(Object from, Object to, Location location)
+ public void symlink(Object from, Object to, StarlarkThread thread)
throws RepositoryFunctionException, EvalException, InterruptedException {
SkylarkPath fromPath = getPath("symlink()", from);
SkylarkPath toPath = getPath("symlink()", to);
WorkspaceRuleEvent w =
WorkspaceRuleEvent.newSymlinkEvent(
- fromPath.toString(), toPath.toString(), rule.getLabel().toString(), location);
+ fromPath.toString(),
+ toPath.toString(),
+ rule.getLabel().toString(),
+ thread.getCallerLocation());
env.getListener().post(w);
try {
checkInOutputDirectory("write", toPath);
@@ -252,16 +254,15 @@
throws RepositoryFunctionException {
if (!path.getPath().getPathString().startsWith(outputDirectory.getPathString())) {
throw new RepositoryFunctionException(
- new EvalException(
- Location.fromFile(path.toString()),
- "Cannot " + operation + " outside of the repository directory for path " + path),
+ Starlark.errorf(
+ "Cannot %s outside of the repository directory for path %s", operation, path),
Transience.PERSISTENT);
}
}
@Override
public void createFile(
- Object path, String content, Boolean executable, Boolean legacyUtf8, Location location)
+ Object path, String content, Boolean executable, Boolean legacyUtf8, StarlarkThread thread)
throws RepositoryFunctionException, EvalException, InterruptedException {
SkylarkPath p = getPath("file()", path);
byte[] contentBytes;
@@ -272,7 +273,11 @@
}
WorkspaceRuleEvent w =
WorkspaceRuleEvent.newFileEvent(
- p.toString(), content, executable, rule.getLabel().toString(), location);
+ p.toString(),
+ content,
+ executable,
+ rule.getLabel().toString(),
+ thread.getCallerLocation());
env.getListener().post(w);
try {
checkInOutputDirectory("write", p);
@@ -295,7 +300,7 @@
Object template,
Dict<?, ?> substitutions, // <String, String> expected
Boolean executable,
- Location location)
+ StarlarkThread thread)
throws RepositoryFunctionException, EvalException, InterruptedException {
SkylarkPath p = getPath("template()", path);
SkylarkPath t = getPath("template()", template);
@@ -308,7 +313,7 @@
substitutionMap,
executable,
rule.getLabel().toString(),
- location);
+ thread.getCallerLocation());
env.getListener().post(w);
try {
checkInOutputDirectory("write", p);
@@ -331,11 +336,12 @@
}
@Override
- public String readFile(Object path, Location location)
+ public String readFile(Object path, StarlarkThread thread)
throws RepositoryFunctionException, EvalException, InterruptedException {
SkylarkPath p = getPath("read()", path);
WorkspaceRuleEvent w =
- WorkspaceRuleEvent.newReadEvent(p.toString(), rule.getLabel().toString(), location);
+ WorkspaceRuleEvent.newReadEvent(
+ p.toString(), rule.getLabel().toString(), thread.getCallerLocation());
env.getListener().post(w);
try {
return FileSystemUtils.readContent(p.getPath(), StandardCharsets.ISO_8859_1);
@@ -400,16 +406,13 @@
return ImmutableMap.copyOf(execPropertiesMap);
}
- private static void validateArguments(Sequence<?> arguments, Location location)
- throws EvalException {
+ private static void validateArguments(Sequence<?> arguments) throws EvalException {
for (Object arg : arguments) {
if (arg instanceof SkylarkPath) {
- throw new EvalException(
- location,
- "Argument '"
- + arg
- + "' is of type path. Paths are not supported for repository rules"
- + " marked as remotable.");
+ throw Starlark.errorf(
+ "Argument '%s' is of type path. Paths are not supported for repository rules marked as"
+ + " remotable.",
+ arg);
}
}
}
@@ -419,8 +422,7 @@
int timeout,
Map<String, String> environment,
boolean quiet,
- String workingDirectory,
- Location location)
+ String workingDirectory)
throws EvalException, InterruptedException {
Preconditions.checkState(canExecuteRemote());
@@ -447,7 +449,7 @@
return new SkylarkExecutionResult(result.exitCode(), stdout, stderr);
} catch (IOException e) {
- throw new EvalException(location, "remote_execute failed", e);
+ throw Starlark.errorf("remote_execute failed: %s", e.getMessage());
}
}
@@ -458,15 +460,15 @@
Dict<?, ?> uncheckedEnvironment, // <String, String> expected
boolean quiet,
String workingDirectory,
- Location location)
+ StarlarkThread thread)
throws EvalException, RepositoryFunctionException, InterruptedException {
Map<String, String> environment =
uncheckedEnvironment.getContents(String.class, String.class, "environment");
if (isRemotable()) {
- validateArguments(arguments, location);
+ validateArguments(arguments);
}
if (canExecuteRemote()) {
- return executeRemote(arguments, timeout, environment, quiet, workingDirectory, location);
+ return executeRemote(arguments, timeout, environment, quiet, workingDirectory);
}
// Execute on the local/host machine
@@ -479,7 +481,7 @@
outputDirectory.getPathString(),
quiet,
rule.getLabel().toString(),
- location);
+ thread.getCallerLocation());
env.getListener().post(w);
createDirectory(outputDirectory);
@@ -512,12 +514,12 @@
}
@Override
- public boolean delete(Object pathObject, Location location)
+ public boolean delete(Object pathObject, StarlarkThread thread)
throws EvalException, RepositoryFunctionException, InterruptedException {
SkylarkPath skylarkPath = externalPath("delete()", pathObject);
WorkspaceRuleEvent w =
WorkspaceRuleEvent.newDeleteEvent(
- skylarkPath.toString(), rule.getLabel().toString(), location);
+ skylarkPath.toString(), rule.getLabel().toString(), thread.getCallerLocation());
env.getListener().post(w);
try {
Path path = skylarkPath.getPath();
@@ -530,19 +532,18 @@
}
@Override
- public void patch(Object patchFile, Integer strip, Location location)
+ public void patch(Object patchFile, Integer strip, StarlarkThread thread)
throws EvalException, RepositoryFunctionException, InterruptedException {
SkylarkPath skylarkPath = getPath("patch()", patchFile);
WorkspaceRuleEvent w =
WorkspaceRuleEvent.newPatchEvent(
- skylarkPath.toString(), strip, rule.getLabel().toString(), location);
+ skylarkPath.toString(), strip, rule.getLabel().toString(), thread.getCallerLocation());
env.getListener().post(w);
try {
PatchUtil.apply(skylarkPath.getPath(), strip, outputDirectory);
} catch (PatchFailedException e) {
throw new RepositoryFunctionException(
- new EvalException(
- Location.BUILTIN, "Error applying patch " + skylarkPath + ": " + e.getMessage()),
+ Starlark.errorf("Error applying patch %s: %s", skylarkPath, e.getMessage()),
Transience.TRANSIENT);
} catch (IOException e) {
throw new RepositoryFunctionException(e, Transience.TRANSIENT);
@@ -550,14 +551,14 @@
}
@Override
- public SkylarkPath which(String program, Location location) throws EvalException {
+ public SkylarkPath which(String program, StarlarkThread thread) throws EvalException {
WorkspaceRuleEvent w =
- WorkspaceRuleEvent.newWhichEvent(program, rule.getLabel().toString(), location);
+ WorkspaceRuleEvent.newWhichEvent(
+ program, rule.getLabel().toString(), thread.getCallerLocation());
env.getListener().post(w);
if (program.contains("/") || program.contains("\\")) {
- throw new EvalException(
- Location.BUILTIN,
- "Program argument of which() may not contains a / or a \\ ('" + program + "' given)");
+ throw Starlark.errorf(
+ "Program argument of which() may not contains a / or a \\ ('%s' given)", program);
}
try {
SkylarkPath commandPath = findCommandOnPath(program);
@@ -626,7 +627,7 @@
String canonicalId,
Dict<?, ?> authUnchecked, // <String, Dict<?, ?>> expected
String integrity,
- Location location)
+ StarlarkThread thread)
throws RepositoryFunctionException, EvalException, InterruptedException {
Map<URI, Map<String, String>> authHeaders =
getAuthHeaders(getAuthContents(authUnchecked, "auth"));
@@ -641,7 +642,7 @@
Optional<Checksum> checksum;
RepositoryFunctionException checksumValidation = null;
try {
- checksum = validateChecksum(sha256, integrity, urls, location);
+ checksum = validateChecksum(sha256, integrity, urls);
} catch (RepositoryFunctionException e) {
checksum = Optional.<Checksum>absent();
checksumValidation = e;
@@ -656,7 +657,7 @@
integrity,
executable,
rule.getLabel().toString(),
- location);
+ thread.getCallerLocation());
env.getListener().post(w);
Path downloadedPath;
try (SilentCloseable c =
@@ -683,7 +684,7 @@
} catch (IOException e) {
if (allowFail) {
Dict<String, Object> dict = Dict.of((Mutability) null, "success", false);
- return StructProvider.STRUCT.createStruct(dict, null);
+ return StructProvider.STRUCT.createWithBuiltinLocation(dict);
} else {
throw new RepositoryFunctionException(e, Transience.TRANSIENT);
}
@@ -696,16 +697,13 @@
}
@Override
- public void extract(Object archive, Object output, String stripPrefix, Location location)
+ public void extract(Object archive, Object output, String stripPrefix, StarlarkThread thread)
throws RepositoryFunctionException, InterruptedException, EvalException {
SkylarkPath archivePath = getPath("extract()", archive);
if (!archivePath.exists()) {
throw new RepositoryFunctionException(
- new EvalException(
- Location.fromFile(archivePath.toString()),
- String.format("Archive path '%s' does not exist.", archivePath.toString())),
- Transience.TRANSIENT);
+ Starlark.errorf("Archive path '%s' does not exist.", archivePath), Transience.TRANSIENT);
}
SkylarkPath outputPath = getPath("extract()", output);
@@ -717,7 +715,7 @@
output.toString(),
stripPrefix,
rule.getLabel().toString(),
- location);
+ thread.getCallerLocation());
env.getListener().post(w);
env.getListener()
@@ -746,7 +744,7 @@
String canonicalId,
Dict<?, ?> auth, // <String, Dict<?, ?>> expected
String integrity,
- Location location)
+ StarlarkThread thread)
throws RepositoryFunctionException, InterruptedException, EvalException {
Map<URI, Map<String, String>> authHeaders = getAuthHeaders(getAuthContents(auth, "auth"));
@@ -760,7 +758,7 @@
Optional<Checksum> checksum;
RepositoryFunctionException checksumValidation = null;
try {
- checksum = validateChecksum(sha256, integrity, urls, location);
+ checksum = validateChecksum(sha256, integrity, urls);
} catch (RepositoryFunctionException e) {
checksum = Optional.<Checksum>absent();
checksumValidation = e;
@@ -775,7 +773,7 @@
type,
stripPrefix,
rule.getLabel().toString(),
- location);
+ thread.getCallerLocation());
// Download to outputDirectory and delete it after extraction
SkylarkPath outputPath = getPath("download_and_extract()", output);
@@ -804,7 +802,7 @@
env.getListener().post(w);
if (allowFail) {
Dict<String, Object> dict = Dict.of((Mutability) null, "success", false);
- return StructProvider.STRUCT.createStruct(dict, null);
+ return StructProvider.STRUCT.createWithBuiltinLocation(dict);
} else {
throw new RepositoryFunctionException(e, Transience.TRANSIENT);
}
@@ -852,26 +850,20 @@
return Checksum.fromString(KeyType.SHA256, RepositoryCache.getChecksum(KeyType.SHA256, path));
}
- private Optional<Checksum> validateChecksum(
- String sha256, String integrity, List<URL> urls, Location loc)
+ private Optional<Checksum> validateChecksum(String sha256, String integrity, List<URL> urls)
throws RepositoryFunctionException, EvalException {
if (!sha256.isEmpty()) {
if (!integrity.isEmpty()) {
- throw new EvalException(loc, "Expected either 'sha256' or 'integrity', but not both");
+ throw Starlark.errorf("Expected either 'sha256' or 'integrity', but not both");
}
try {
return Optional.of(Checksum.fromString(KeyType.SHA256, sha256));
} catch (IllegalArgumentException e) {
warnAboutChecksumError(urls, e.getMessage());
throw new RepositoryFunctionException(
- new EvalException(
- loc,
- "Definition of repository "
- + rule.getName()
- + ": "
- + e.getMessage()
- + " at "
- + rule.getLocation()),
+ Starlark.errorf(
+ "Definition of repository %s: %s at %s",
+ rule.getName(), e.getMessage(), rule.getLocation()),
Transience.PERSISTENT);
}
}
@@ -885,14 +877,9 @@
} catch (IllegalArgumentException e) {
warnAboutChecksumError(urls, e.getMessage());
throw new RepositoryFunctionException(
- new EvalException(
- loc,
- "Definition of repository "
- + rule.getName()
- + ": "
- + e.getMessage()
- + " at "
- + rule.getLocation()),
+ Starlark.errorf(
+ "Definition of repository %s: %s at %s",
+ rule.getName(), e.getMessage(), rule.getLocation()),
Transience.PERSISTENT);
}
}
@@ -917,7 +904,7 @@
if (finalChecksum.getKeyType() == KeyType.SHA256) {
out.put("sha256", finalChecksum.toString());
}
- return StructProvider.STRUCT.createStruct(Dict.copyOf(null, out.build()), null);
+ return StructProvider.STRUCT.createWithBuiltinLocation(Dict.copyOf(null, out.build()));
}
private static ImmutableList<String> checkAllUrls(Iterable<?> urlList) throws EvalException {
@@ -1014,22 +1001,21 @@
try {
fileValue = (FileValue) env.getValueOrThrow(fileSkyKey, IOException.class);
} catch (IOException e) {
- throw new EvalException(Location.BUILTIN, e);
+ throw Starlark.errorf("%s", e.getMessage());
}
if (fileValue == null) {
throw RepositoryFunction.restart();
}
if (!fileValue.isFile() || fileValue.isSpecialFile()) {
- throw new EvalException(
- Location.BUILTIN, "Not a regular file: " + rootedPath.asPath().getPathString());
+ throw Starlark.errorf("Not a regular file: %s", rootedPath.asPath().getPathString());
}
// A label does not contains space so it safe to use as a key.
try {
markerData.put("FILE:" + label, RepositoryFunction.fileValueToMarkerValue(fileValue));
} catch (IOException e) {
- throw new EvalException(Location.BUILTIN, e);
+ throw Starlark.errorf("%s", e.getMessage());
}
return new SkylarkPath(rootedPath.asPath());
}
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
index af47495..54520ac 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java
@@ -66,7 +66,6 @@
Boolean configure,
Boolean remotable,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("repository_rule");
@@ -104,7 +103,7 @@
builder.setRuleDefinitionEnvironmentLabelAndHashCode(
(Label) thread.getGlobals().getLabel(), thread.getTransitiveContentHashCode());
builder.setWorkspaceOnly();
- return new RepositoryRuleFunction(builder, loc, implementation);
+ return new RepositoryRuleFunction(builder, thread.getCallerLocation(), implementation);
}
// RepositoryRuleFunction is the result of repository_rule(...).
@@ -157,8 +156,7 @@
}
@Override
- public Object call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ public Object call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException, InterruptedException {
if (!args.isEmpty()) {
throw new EvalException(null, "unexpected positional arguments");
@@ -189,7 +187,7 @@
}
try {
RuleClass ruleClass = builder.build(ruleClassName, ruleClassName);
- PackageContext context = PackageFactory.getContext(thread, loc);
+ PackageContext context = PackageFactory.getContext(thread);
Package.Builder packageBuilder = context.getBuilder();
// TODO(adonovan): is this safe? Check.
@@ -210,6 +208,7 @@
WorkspaceFactoryHelper.addMainRepoEntry(
packageBuilder, externalRepoName, thread.getSemantics());
+ Location loc = thread.getCallerLocation();
WorkspaceFactoryHelper.addRepoMappings(packageBuilder, kwargs, externalRepoName, loc);
Rule rule =
@@ -222,17 +221,16 @@
callStack.toString());
return rule;
} catch (InvalidRuleException | NameConflictException | LabelSyntaxException e) {
- throw new EvalException(loc, e.getMessage());
+ throw Starlark.errorf("%s", e.getMessage());
}
}
}
@Override
- public void failWithIncompatibleUseCcConfigureFromRulesCc(
- Location location, StarlarkThread thread) throws EvalException {
+ public void failWithIncompatibleUseCcConfigureFromRulesCc(StarlarkThread thread)
+ throws EvalException {
if (thread.getSemantics().incompatibleUseCcConfigureFromRulesCc()) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"Incompatible flag "
+ "--incompatible_use_cc_configure_from_rules_cc has been flipped. Please use "
+ "cc_configure and related logic from https://github.com/bazelbuild/rules_cc. "
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
index 7ce69c8..d51b49a 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCcModule.java
@@ -19,7 +19,6 @@
import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo;
import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.rules.cpp.CcCompilationContext;
import com.google.devtools.build.lib.rules.cpp.CcCompilationOutputs;
import com.google.devtools.build.lib.rules.cpp.CcLinkingContext;
@@ -87,7 +86,6 @@
boolean disallowPicOutputs,
boolean disallowNopicOutputs,
Sequence<?> additionalInputs, // <Artifact> expected
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException {
return compile(
@@ -112,8 +110,7 @@
/* headersForClifDoNotUseThisParam= */ ImmutableList.of(),
StarlarkList.immutableCopyOf(
additionalInputs.getContents(Artifact.class, "additional_inputs")),
- location,
- /* thread= */ null);
+ thread);
}
@Override
@@ -130,7 +127,6 @@
boolean linkDepsStatically,
Sequence<?> additionalInputs, // <Artifact> expected
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException {
return super.link(
@@ -146,14 +142,13 @@
linkDepsStatically,
additionalInputs,
/* grepIncludes= */ null,
- location,
thread);
}
@Override
public CcCompilationOutputs createCompilationOutputsFromSkylark(
- Object objectsObject, Object picObjectsObject, Location location) throws EvalException {
- return super.createCompilationOutputsFromSkylark(objectsObject, picObjectsObject, location);
+ Object objectsObject, Object picObjectsObject) throws EvalException {
+ return super.createCompilationOutputsFromSkylark(objectsObject, picObjectsObject);
}
@Override
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 b56e0c3..d52eae2 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
@@ -35,7 +35,6 @@
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassNamePredicate;
import com.google.devtools.build.lib.packages.Type.ConversionException;
import com.google.devtools.build.lib.packages.Type.LabelClass;
@@ -1038,13 +1037,11 @@
@AutoCodec @AutoCodec.VisibleForSerialization
static final Function<Rule, AspectParameters> EMPTY_FUNCTION = input -> AspectParameters.EMPTY;
- public Builder<TYPE> aspect(SkylarkDefinedAspect skylarkAspect, Location location)
- throws EvalException {
+ public Builder<TYPE> aspect(SkylarkDefinedAspect skylarkAspect) throws EvalException {
SkylarkRuleAspect skylarkRuleAspect = new SkylarkRuleAspect(skylarkAspect);
RuleAspect<?> oldAspect = this.aspects.put(skylarkAspect.getName(), skylarkRuleAspect);
if (oldAspect != null) {
- throw new EvalException(
- location, String.format("aspect %s added more than once", skylarkAspect.getName()));
+ throw Starlark.errorf("aspect %s added more than once", skylarkAspect.getName());
}
return this;
}
@@ -1380,7 +1377,6 @@
public static final class SkylarkComputedDefaultTemplate {
private final Type<?> type;
private final StarlarkCallbackHelper callback;
- private final Location location;
private final ImmutableList<String> dependencies;
/**
@@ -1391,19 +1387,14 @@
* @param dependencies A list of all names of other attributes that are accessed by this
* attribute.
* @param callback A function to compute the actual attribute value.
- * @param location The location of the Skylark function.
*/
public SkylarkComputedDefaultTemplate(
- Type<?> type,
- ImmutableList<String> dependencies,
- StarlarkCallbackHelper callback,
- Location location) {
+ Type<?> type, ImmutableList<String> dependencies, StarlarkCallbackHelper callback) {
this.type = Preconditions.checkNotNull(type);
// Order is important for #createDependencyAssignmentTuple.
this.dependencies =
Ordering.natural().immutableSortedCopy(Preconditions.checkNotNull(dependencies));
this.callback = Preconditions.checkNotNull(callback);
- this.location = Preconditions.checkNotNull(location);
}
/**
@@ -1494,10 +1485,8 @@
try {
return type.cast((result == Starlark.NONE) ? type.getDefaultValue() : result);
} catch (ClassCastException ex) {
- throw new EvalException(
- location,
- String.format(
- "expected '%s', but got '%s'", type, EvalUtils.getDataTypeName(result, true)));
+ throw Starlark.errorf(
+ "expected '%s', but got '%s'", type, EvalUtils.getDataTypeName(result, true));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java b/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java
index 1cd0382..54d92b9 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/BuiltinProvider.java
@@ -18,6 +18,7 @@
import com.google.devtools.build.lib.packages.NativeProvider.NativeKey;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
+import com.google.devtools.build.lib.syntax.Starlark;
import javax.annotation.Nullable;
/**
@@ -91,12 +92,11 @@
}
/**
- * Convenience method for subclasses of this class to throw a consistent error when
- * a provider is unable to be constructed from skylark.
+ * Convenience method for subclasses of this class to throw a consistent error when a provider is
+ * unable to be constructed from skylark.
*/
- protected T throwUnsupportedConstructorException(Location loc) throws EvalException {
- throw new EvalException(
- loc, String.format("'%s' cannot be constructed from Starlark", getPrintableName()));
+ protected final T throwUnsupportedConstructorException() throws EvalException {
+ throw Starlark.errorf("'%s' cannot be constructed from Starlark", getPrintableName());
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index f6df042..598c33f 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -108,8 +108,9 @@
return name;
}
- private void convertAndProcess(
- Package.Builder pkgBuilder, Location location, Object value)
+ // The location is used not just for exceptions (for which null would do),
+ // but also for reporting events.
+ private void convertAndProcess(Package.Builder pkgBuilder, Location location, Object value)
throws EvalException {
T typedValue = type.convert(value, "'package' argument", pkgBuilder.getBuildFileLabel());
process(pkgBuilder, location, typedValue);
@@ -515,13 +516,12 @@
}
@Override
- public Object call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ public Object call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException {
if (!args.isEmpty()) {
throw new EvalException(null, "unexpected positional arguments");
}
- Package.Builder pkgBuilder = getContext(thread, loc).pkgBuilder;
+ Package.Builder pkgBuilder = getContext(thread).pkgBuilder;
// Validate parameter list
if (pkgBuilder.isPackageFunctionUsed()) {
@@ -534,6 +534,7 @@
throw new EvalException(
null, "at least one argument must be given to the 'package' function");
}
+ Location loc = thread.getCallerLocation();
for (Map.Entry<String, Object> kwarg : kwargs.entrySet()) {
String name = kwarg.getKey();
PackageArgument<?> pkgarg = packageArguments.get(name);
@@ -548,14 +549,12 @@
}
/** Get the PackageContext by looking up in the environment. */
- public static PackageContext getContext(StarlarkThread thread, Location location)
- throws EvalException {
+ public static PackageContext getContext(StarlarkThread thread) throws EvalException {
PackageContext value = thread.getThreadLocal(PackageContext.class);
if (value == null) {
// if PackageContext is missing, we're not called from a BUILD file. This happens if someone
// uses native.some_func() in the wrong place.
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"The native module can be accessed only from a BUILD thread. "
+ "Wrap the function in a macro and call it from a BUILD file");
}
@@ -592,29 +591,32 @@
}
@Override
- public NoneType call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ public NoneType call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException, InterruptedException {
if (!args.isEmpty()) {
- throw new EvalException(null, "unexpected positional arguments");
+ throw Starlark.errorf("unexpected positional arguments");
}
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase(ruleClass.getName());
try {
- addRule(getContext(thread, loc), kwargs, loc, thread);
+ addRule(getContext(thread), kwargs, thread);
} catch (RuleFactory.InvalidRuleException | Package.NameConflictException e) {
- throw new EvalException(loc, e.getMessage());
+ throw new EvalException(null, e.getMessage());
}
return Starlark.NONE;
}
- private void addRule(
- PackageContext context, Map<String, Object> kwargs, Location loc, StarlarkThread thread)
+ private void addRule(PackageContext context, Map<String, Object> kwargs, StarlarkThread thread)
throws RuleFactory.InvalidRuleException, Package.NameConflictException,
InterruptedException {
BuildLangTypedAttributeValuesMap attributeValues =
new BuildLangTypedAttributeValuesMap(kwargs);
RuleFactory.createAndAddRule(
- context, ruleClass, attributeValues, loc, thread, new AttributeContainer(ruleClass));
+ context,
+ ruleClass,
+ attributeValues,
+ thread.getCallerLocation(),
+ thread,
+ new AttributeContainer(ruleClass));
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java
index 473df91..780333a 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkAspect.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.packages;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAspectApi;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -26,10 +25,9 @@
* Attaches this aspect to an attribute.
*
* @param attrBuilder the builder of the attribute to add this aspect to
- * @param loc the location in skylark which adds this aspect to an attribute
* @throws EvalException if this aspect cannot be successfully applied to the given attribute
*/
- void attachToAttribute(Attribute.Builder<?> attrBuilder, Location loc) throws EvalException;
+ void attachToAttribute(Attribute.Builder<?> attrBuilder) throws EvalException;
/** Returns the aspect class for this aspect. */
AspectClass getAspectClass();
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java
index be38ce1..310ed74 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkDefinedAspect.java
@@ -20,12 +20,12 @@
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
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.Printer;
+import com.google.devtools.build.lib.syntax.Starlark;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
@@ -235,13 +235,12 @@
}
@Override
- public void attachToAttribute(Attribute.Builder<?> attrBuilder, Location loc)
- throws EvalException {
+ public void attachToAttribute(Attribute.Builder<?> attrBuilder) throws EvalException {
if (!isExported()) {
- throw new EvalException(
- loc, "Aspects should be top-level values in extension files that define them.");
+ throw Starlark.errorf(
+ "Aspects should be top-level values in extension files that define them.");
}
- attrBuilder.aspect(this, loc);
+ attrBuilder.aspect(this);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java
index c29badc..ee5983c 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeAspect.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.packages;
import com.google.common.collect.ImmutableSet;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.syntax.Printer;
/** A natively-defined aspect that is may be referenced by skylark attribute definitions. */
@@ -26,7 +25,7 @@
}
@Override
- public void attachToAttribute(Attribute.Builder<?> attrBuilder, Location loc) {
+ public void attachToAttribute(Attribute.Builder<?> attrBuilder) {
attrBuilder.aspect(this);
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java
index f267a59..c35e3c8 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java
@@ -78,11 +78,10 @@
Sequence<?> exclude,
Integer excludeDirs,
Object allowEmptyArgument,
- Location loc,
StarlarkThread thread)
throws EvalException, ConversionException, InterruptedException {
BazelStarlarkContext.from(thread).checkLoadingPhase("native.glob");
- PackageContext context = getContext(thread, loc);
+ PackageContext context = getContext(thread);
List<String> includes = Type.STRING_LIST.convert(include, "'glob' argument");
List<String> excludes = Type.STRING_LIST.convert(exclude, "'glob' argument");
@@ -94,8 +93,8 @@
} else if (allowEmptyArgument instanceof Boolean) {
allowEmpty = (Boolean) allowEmptyArgument;
} else {
- throw new EvalException(
- loc, "expected boolean for argument `allow_empty`, got `" + allowEmptyArgument + "`");
+ throw Starlark.errorf(
+ "expected boolean for argument `allow_empty`, got `%s`", allowEmptyArgument);
}
try {
@@ -109,25 +108,26 @@
Joiner.on(", ").join(includes),
excludes.isEmpty() ? "" : " - [" + Joiner.on(", ").join(excludes) + "]",
e.getMessage());
+ Location loc = thread.getCallerLocation();
context.eventHandler.handle(Event.error(loc, errorMessage));
context.pkgBuilder.setIOExceptionAndMessage(e, errorMessage);
matches = ImmutableList.of();
} catch (BadGlobException e) {
- throw new EvalException(loc, e.getMessage());
+ throw new EvalException(null, e.getMessage());
} catch (IllegalArgumentException e) {
- throw new EvalException(loc, "illegal argument in call to glob", e);
+ throw new EvalException(null, "illegal argument in call to glob", e);
}
return StarlarkList.copyOf(thread.mutability(), matches);
}
@Override
- public Object existingRule(String name, Location loc, StarlarkThread thread)
+ public Object existingRule(String name, StarlarkThread thread)
throws EvalException, InterruptedException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("native.existing_rule");
- PackageContext context = getContext(thread, loc);
+ PackageContext context = getContext(thread);
Target target = context.pkgBuilder.getTarget(name);
- Dict<String, Object> rule = targetDict(target, loc, thread.mutability());
+ Dict<String, Object> rule = targetDict(target, thread.mutability());
return rule != null ? rule : Starlark.NONE;
}
@@ -136,18 +136,18 @@
For now, we ignore this, since users can implement it in Skylark.
*/
@Override
- public Dict<String, Dict<String, Object>> existingRules(Location loc, StarlarkThread thread)
+ public Dict<String, Dict<String, Object>> existingRules(StarlarkThread thread)
throws EvalException, InterruptedException {
BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("native.existing_rules");
- PackageContext context = getContext(thread, loc);
+ PackageContext context = getContext(thread);
Collection<Target> targets = context.pkgBuilder.getTargets();
Mutability mu = thread.mutability();
Dict<String, Dict<String, Object>> rules = Dict.of(mu);
for (Target t : targets) {
if (t instanceof Rule) {
- Dict<String, Object> rule = targetDict(t, loc, mu);
+ Dict<String, Object> rule = targetDict(t, mu);
Preconditions.checkNotNull(rule);
- rules.put(t.getName(), rule, loc);
+ rules.put(t.getName(), rule, (Location) null);
}
}
@@ -159,11 +159,10 @@
String name,
Sequence<?> packagesO,
Sequence<?> includesO,
- Location loc,
StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingPhase("native.package_group");
- PackageContext context = getContext(thread, loc);
+ PackageContext context = getContext(thread);
List<String> packages =
Type.STRING_LIST.convert(packagesO, "'package_group.packages argument'");
@@ -171,57 +170,51 @@
BuildType.LABEL_LIST.convert(
includesO, "'package_group.includes argument'", context.pkgBuilder.getBuildFileLabel());
+ Location loc = thread.getCallerLocation();
try {
context.pkgBuilder.addPackageGroup(name, packages, includes, context.eventHandler, loc);
return Starlark.NONE;
} catch (LabelSyntaxException e) {
- throw new EvalException(
- loc, "package group has invalid name: " + name + ": " + e.getMessage());
+ throw Starlark.errorf("package group has invalid name: %s: %s", name, e.getMessage());
} catch (Package.NameConflictException e) {
- throw new EvalException(loc, e.getMessage());
+ throw new EvalException(null, e.getMessage());
}
}
@Override
public NoneType exportsFiles(
- Sequence<?> srcs, Object visibilityO, Object licensesO, Location loc, StarlarkThread thread)
+ Sequence<?> srcs, Object visibilityO, Object licensesO, StarlarkThread thread)
throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingPhase("native.exports_files");
- Package.Builder pkgBuilder = getContext(thread, loc).pkgBuilder;
+ Package.Builder pkgBuilder = getContext(thread).pkgBuilder;
List<String> files = Type.STRING_LIST.convert(srcs, "'exports_files' operand");
- RuleVisibility visibility;
- try {
- visibility =
- EvalUtils.isNullOrNone(visibilityO)
- ? ConstantRuleVisibility.PUBLIC
- : PackageFactory.getVisibility(
- pkgBuilder.getBuildFileLabel(),
- BuildType.LABEL_LIST.convert(
- visibilityO, "'exports_files' operand", pkgBuilder.getBuildFileLabel()));
- } catch (EvalException e) {
- throw new EvalException(loc, e.getMessage());
- }
+ RuleVisibility visibility =
+ EvalUtils.isNullOrNone(visibilityO)
+ ? ConstantRuleVisibility.PUBLIC
+ : PackageFactory.getVisibility(
+ pkgBuilder.getBuildFileLabel(),
+ BuildType.LABEL_LIST.convert(
+ visibilityO, "'exports_files' operand", pkgBuilder.getBuildFileLabel()));
+
// TODO(bazel-team): is licenses plural or singular?
License license = BuildType.LICENSE.convertOptional(licensesO, "'exports_files' operand");
+ Location loc = thread.getCallerLocation();
for (String file : files) {
String errorMessage = LabelValidator.validateTargetName(file);
if (errorMessage != null) {
- throw new EvalException(loc, errorMessage);
+ throw Starlark.errorf("%s", errorMessage);
}
try {
InputFile inputFile = pkgBuilder.createInputFile(file, loc);
if (inputFile.isVisibilitySpecified() && inputFile.getVisibility() != visibility) {
- throw new EvalException(
- loc,
- String.format(
- "visibility for exported file '%s' declared twice", inputFile.getName()));
+ throw Starlark.errorf(
+ "visibility for exported file '%s' declared twice", inputFile.getName());
}
if (license != null && inputFile.isLicenseSpecified()) {
- throw new EvalException(
- loc,
- String.format("licenses for exported file '%s' declared twice", inputFile.getName()));
+ throw Starlark.errorf(
+ "licenses for exported file '%s' declared twice", inputFile.getName());
}
// See if we should check third-party licenses: first checking for any hard-coded policy,
@@ -241,41 +234,38 @@
&& license == null
&& !pkgBuilder.getDefaultLicense().isSpecified()
&& RuleClass.isThirdPartyPackage(pkgBuilder.getPackageIdentifier())) {
- throw new EvalException(
- loc,
- "third-party file '"
- + inputFile.getName()
- + "' lacks a license declaration "
- + "with one of the following types: notice, reciprocal, permissive, "
- + "restricted, unencumbered, by_exception_only");
+ throw Starlark.errorf(
+ "third-party file '%s' lacks a license declaration with one of the following types:"
+ + " notice, reciprocal, permissive, restricted, unencumbered, by_exception_only",
+ inputFile.getName());
}
pkgBuilder.setVisibilityAndLicense(inputFile, visibility, license);
} catch (Package.Builder.GeneratedLabelConflict e) {
- throw new EvalException(loc, e.getMessage());
+ throw Starlark.errorf("%s", e.getMessage());
}
}
return Starlark.NONE;
}
@Override
- public String packageName(Location loc, StarlarkThread thread) throws EvalException {
+ public String packageName(StarlarkThread thread) throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingPhase("native.package_name");
PackageIdentifier packageId =
- PackageFactory.getContext(thread, loc).getBuilder().getPackageIdentifier();
+ PackageFactory.getContext(thread).getBuilder().getPackageIdentifier();
return packageId.getPackageFragment().getPathString();
}
@Override
- public String repositoryName(Location location, StarlarkThread thread) throws EvalException {
+ public String repositoryName(StarlarkThread thread) throws EvalException {
BazelStarlarkContext.from(thread).checkLoadingPhase("native.repository_name");
PackageIdentifier packageId =
- PackageFactory.getContext(thread, location).getBuilder().getPackageIdentifier();
+ PackageFactory.getContext(thread).getBuilder().getPackageIdentifier();
return packageId.getRepository().toString();
}
@Nullable
- private static Dict<String, Object> targetDict(Target target, Location loc, Mutability mu)
+ private static Dict<String, Object> targetDict(Target target, Mutability mu)
throws EvalException {
if (!(target instanceof Rule)) {
return null;
@@ -300,7 +290,7 @@
if (val == null) {
continue;
}
- values.put(attr.getName(), val, loc);
+ values.put(attr.getName(), val, (Location) null);
} catch (NotRepresentableException e) {
throw new NotRepresentableException(
String.format(
@@ -308,8 +298,8 @@
}
}
- values.put("name", rule.getName(), loc);
- values.put("kind", rule.getRuleClass(), loc);
+ values.put("name", rule.getName(), (Location) null);
+ values.put("kind", rule.getRuleClass(), (Location) null);
return values;
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java
index d8ccc30..95a17c3 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkProvider.java
@@ -149,13 +149,14 @@
}
@Override
- public Object fastcall(StarlarkThread thread, Location loc, Object[] positional, Object[] named)
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named)
throws EvalException, InterruptedException {
// TODO(adonovan): we can likely come up with a more efficient implementation
// ...then make matchSignature private again?
Object[] arguments =
Starlark.matchSignature(
signature, this, /*defaults=*/ null, thread.mutability(), positional, named);
+ Location loc = thread.getCallerLocation();
if (fields == null) {
// provider(**kwargs)
@SuppressWarnings("unchecked")
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
index f8ee7c8..ce9afaf 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkBuildLibrary.java
@@ -85,16 +85,14 @@
// Not documented by docgen, as this is only available in BUILD files.
// TODO(cparsons): Devise a solution to document BUILD functions.
documented = false,
- useLocation = true,
useStarlarkThread = true)
public NoneType environmentGroup(
String name,
Sequence<?> environmentsList, // <Label>
Sequence<?> defaultsList, // <Label>
- Location loc,
StarlarkThread thread)
throws EvalException {
- PackageContext context = getContext(thread, loc);
+ PackageContext context = getContext(thread);
List<Label> environments =
BuildType.LABEL_LIST.convert(
environmentsList,
@@ -105,18 +103,17 @@
defaultsList, "'environment_group argument'", context.pkgBuilder.getBuildFileLabel());
if (environments.isEmpty()) {
- throw new EvalException(
- loc, "environment group " + name + " must contain at least one environment");
+ throw Starlark.errorf("environment group %s must contain at least one environment", name);
}
try {
+ Location loc = thread.getCallerLocation();
context.pkgBuilder.addEnvironmentGroup(
name, environments, defaults, context.eventHandler, loc);
return Starlark.NONE;
} catch (LabelSyntaxException e) {
- throw new EvalException(
- loc, "environment group has invalid name: " + name + ": " + e.getMessage());
+ throw Starlark.errorf("environment group has invalid name: %s: %s", name, e.getMessage());
} catch (Package.NameConflictException e) {
- throw new EvalException(loc, e.getMessage());
+ throw Starlark.errorf("%s", e.getMessage());
}
}
@@ -133,19 +130,17 @@
// Not documented by docgen, as this is only available in BUILD files.
// TODO(cparsons): Devise a solution to document BUILD functions.
documented = false,
- useStarlarkThread = true,
- useLocation = true)
+ useStarlarkThread = true)
public NoneType licenses(
Sequence<?> licensesList, // list of license strings
- Location loc,
StarlarkThread thread)
throws EvalException {
- PackageContext context = getContext(thread, loc);
+ PackageContext context = getContext(thread);
try {
License license = BuildType.LICENSE.convert(licensesList, "'licenses' operand");
context.pkgBuilder.setDefaultLicense(license);
} catch (ConversionException e) {
- context.eventHandler.handle(Event.error(loc, e.getMessage()));
+ context.eventHandler.handle(Event.error(thread.getCallerLocation(), e.getMessage()));
context.pkgBuilder.setContainsErrors();
}
return Starlark.NONE;
@@ -160,18 +155,16 @@
// Not documented by docgen, as this is only available in BUILD files.
// TODO(cparsons): Devise a solution to document BUILD functions.
documented = false,
- useStarlarkThread = true,
- useLocation = true)
- public NoneType distribs(Object object, Location loc, StarlarkThread thread)
- throws EvalException {
- PackageContext context = getContext(thread, loc);
+ useStarlarkThread = true)
+ public NoneType distribs(Object object, StarlarkThread thread) throws EvalException {
+ PackageContext context = getContext(thread);
try {
Set<DistributionType> distribs =
BuildType.DISTRIBUTIONS.convert(object, "'distribs' operand");
context.pkgBuilder.setDefaultDistribs(distribs);
} catch (ConversionException e) {
- context.eventHandler.handle(Event.error(loc, e.getMessage()));
+ context.eventHandler.handle(Event.error(thread.getCallerLocation(), e.getMessage()));
context.pkgBuilder.setContainsErrors();
}
return Starlark.NONE;
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java b/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java
index 845c677..0b0cc35 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StructImpl.java
@@ -170,34 +170,34 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
StringBuilder sb = new StringBuilder();
- printProtoTextMessage(this, sb, 0, loc);
+ printProtoTextMessage(this, sb, 0);
return sb.toString();
}
- private void printProtoTextMessage(ClassObject object, StringBuilder sb, int indent, Location loc)
+ private static void printProtoTextMessage(ClassObject object, StringBuilder sb, int indent)
throws EvalException {
// For determinism sort the fields alphabetically.
List<String> fields = new ArrayList<>(object.getFieldNames());
Collections.sort(fields);
for (String field : fields) {
- printProtoTextMessage(field, object.getValue(field), sb, indent, loc);
+ printProtoTextMessage(field, object.getValue(field), sb, indent);
}
}
- private void printProtoTextMessage(
- String key, Object value, StringBuilder sb, int indent, Location loc, String container)
+ private static void printProtoTextMessage(
+ String key, Object value, StringBuilder sb, int indent, String container)
throws EvalException {
if (value instanceof Map.Entry) {
Map.Entry<?, ?> entry = (Map.Entry<?, ?>) value;
print(sb, key + " {", indent);
- printProtoTextMessage("key", entry.getKey(), sb, indent + 1, loc);
- printProtoTextMessage("value", entry.getValue(), sb, indent + 1, loc);
+ printProtoTextMessage("key", entry.getKey(), sb, indent + 1);
+ printProtoTextMessage("value", entry.getValue(), sb, indent + 1);
print(sb, "}", indent);
} else if (value instanceof ClassObject) {
print(sb, key + " {", indent);
- printProtoTextMessage((ClassObject) value, sb, indent + 1, loc);
+ printProtoTextMessage((ClassObject) value, sb, indent + 1);
print(sb, "}", indent);
} else if (value instanceof String) {
print(
@@ -211,36 +211,31 @@
// as the protocol buffers do.
print(sb, key + ": " + value, indent);
} else {
- throw new EvalException(
- loc,
- "Invalid text format, expected a struct, a dict, a string, a bool, or an int but got a "
- + EvalUtils.getDataTypeName(value)
- + " for "
- + container
- + " '"
- + key
- + "'");
+ throw Starlark.errorf(
+ "Invalid text format, expected a struct, a dict, a string, a bool, or an int but got a"
+ + " %s for %s '%s'",
+ EvalUtils.getDataTypeName(value), container, key);
}
}
- private void printProtoTextMessage(
- String key, Object value, StringBuilder sb, int indent, Location loc) throws EvalException {
+ private static void printProtoTextMessage(String key, Object value, StringBuilder sb, int indent)
+ throws EvalException {
if (value instanceof Sequence) {
for (Object item : ((Sequence) value)) {
// TODO(bazel-team): There should be some constraint on the fields of the structs
// in the same list but we ignore that for now.
- printProtoTextMessage(key, item, sb, indent, loc, "list element in struct field");
+ printProtoTextMessage(key, item, sb, indent, "list element in struct field");
}
} else if (value instanceof Dict) {
for (Map.Entry<?, ?> entry : ((Dict<?, ?>) value).entrySet()) {
- printProtoTextMessage(key, entry, sb, indent, loc, "entry of dictionary");
+ printProtoTextMessage(key, entry, sb, indent, "entry of dictionary");
}
} else {
- printProtoTextMessage(key, value, sb, indent, loc, "struct field");
+ printProtoTextMessage(key, value, sb, indent, "struct field");
}
}
- private void print(StringBuilder sb, String text, int indent) {
+ private static void print(StringBuilder sb, String text, int indent) {
for (int i = 0; i < indent; i++) {
sb.append(" ");
}
@@ -258,13 +253,13 @@
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
StringBuilder sb = new StringBuilder();
- printJson(this, sb, loc, "struct field", null);
+ printJson(this, sb, "struct field", null);
return sb.toString();
}
- private void printJson(Object value, StringBuilder sb, Location loc, String container, String key)
+ private static void printJson(Object value, StringBuilder sb, String container, String key)
throws EvalException {
if (value == Starlark.NONE) {
sb.append("null");
@@ -278,7 +273,7 @@
sb.append("\"");
sb.append(field);
sb.append("\":");
- printJson(((ClassObject) value).getValue(field), sb, loc, "struct field", field);
+ printJson(((ClassObject) value).getValue(field), sb, "struct field", field);
}
sb.append("}");
} else if (value instanceof Dict) {
@@ -288,20 +283,16 @@
sb.append(join);
join = ",";
if (!(entry.getKey() instanceof String)) {
- String errorMessage =
- "Keys must be a string but got a "
- + EvalUtils.getDataTypeName(entry.getKey())
- + " for "
- + container;
- if (key != null) {
- errorMessage += " '" + key + "'";
- }
- throw new EvalException(loc, errorMessage);
+ throw Starlark.errorf(
+ "Keys must be a string but got a %s for %s%s",
+ EvalUtils.getDataTypeName(entry.getKey()),
+ container,
+ key != null ? " '" + key + "'" : "");
}
sb.append("\"");
sb.append(entry.getKey());
sb.append("\":");
- printJson(entry.getValue(), sb, loc, "dict value", String.valueOf(entry.getKey()));
+ printJson(entry.getValue(), sb, "dict value", String.valueOf(entry.getKey()));
}
sb.append("}");
} else if (value instanceof List) {
@@ -310,7 +301,7 @@
for (Object item : ((List) value)) {
sb.append(join);
join = ",";
- printJson(item, sb, loc, "list element in struct field", key);
+ printJson(item, sb, "list element in struct field", key);
}
sb.append("]");
} else if (value instanceof String) {
@@ -320,20 +311,14 @@
} else if (value instanceof Integer || value instanceof Boolean) {
sb.append(value);
} else {
- String errorMessage =
- "Invalid text format, expected a struct, a string, a bool, or an int "
- + "but got a "
- + EvalUtils.getDataTypeName(value)
- + " for "
- + container;
- if (key != null) {
- errorMessage += " '" + key + "'";
- }
- throw new EvalException(loc, errorMessage);
+ throw Starlark.errorf(
+ "Invalid text format, expected a struct, a string, a bool, or an int but got a %s for"
+ + " %s%s",
+ EvalUtils.getDataTypeName(value), container, key != null ? " '" + key + "'" : "");
}
}
- private String jsonEscapeString(String string) {
+ private static String jsonEscapeString(String string) {
return escapeDoubleQuotesAndBackslashesAndNewlines(string)
.replace("\r", "\\r")
.replace("\t", "\\t");
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java b/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
index 998f632..ca75eb8 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
@@ -18,6 +18,8 @@
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Map;
/**
@@ -36,26 +38,34 @@
}
@Override
- public StructImpl createStruct(Dict<?, ?> kwargs, Location loc) throws EvalException {
- Map<String, Object> kwargsMap = kwargs.getContents(String.class, Object.class, "kwargs");
- if (kwargsMap.containsKey("to_json")) {
- throw new EvalException(loc, "cannot override built-in struct function 'to_json'");
+ public StructImpl createStruct(Dict<String, Object> kwargs, StarlarkThread thread)
+ throws EvalException {
+ return create(kwargs, thread.getCallerLocation());
+ }
+
+ // Called from SkylarkRepositoryContext. TODO(adonovan): eliminate.
+ public StructImpl createWithBuiltinLocation(Dict<String, Object> kwargs) throws EvalException {
+ return create(kwargs, Location.BUILTIN);
+ }
+
+ private StructImpl create(Dict<String, Object> kwargs, Location location) throws EvalException {
+ if (kwargs.containsKey("to_json")) {
+ throw Starlark.errorf("cannot override built-in struct function 'to_json'");
}
- if (kwargsMap.containsKey("to_proto")) {
- throw new EvalException(loc, "cannot override built-in struct function 'to_proto'");
+ if (kwargs.containsKey("to_proto")) {
+ throw Starlark.errorf("cannot override built-in struct function 'to_proto'");
}
- return SkylarkInfo.create(this, kwargsMap, loc);
+ return SkylarkInfo.create(this, kwargs, location);
}
/**
* Creates a struct with the given field values and message format for unknown fields.
*
* <p>The custom message is useful for objects that have fields but aren't exactly used as
- * providers, such as the {@code native} object, and the struct fields of {@code ctx} like
- * {@code ctx.attr}.
- * */
- public SkylarkInfo create(
- Map<String, Object> values, String errorMessageFormatForUnknownField) {
+ * providers, such as the {@code native} object, and the struct fields of {@code ctx} like {@code
+ * ctx.attr}.
+ */
+ public SkylarkInfo create(Map<String, Object> values, String errorMessageFormatForUnknownField) {
return SkylarkInfo.createWithCustomMessage(this, values, errorMessageFormatForUnknownField);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
index 656dfbe..f59f28e 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java
@@ -274,14 +274,13 @@
}
@Override
- public Object call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ public Object call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException, InterruptedException {
if (!args.isEmpty()) {
throw new EvalException(null, "unexpected positional arguments");
}
try {
- Package.Builder builder = PackageFactory.getContext(thread, loc).pkgBuilder;
+ Package.Builder builder = PackageFactory.getContext(thread).pkgBuilder;
// TODO(adonovan): this doesn't look safe!
String externalRepoName = (String) kwargs.get("name");
if (!allowOverride
@@ -298,6 +297,7 @@
// @<mainRepoName> as a separate repository. This will be overridden if the main
// repository has a repo_mapping entry from <mainRepoName> to something.
WorkspaceFactoryHelper.addMainRepoEntry(builder, externalRepoName, thread.getSemantics());
+ Location loc = thread.getCallerLocation();
WorkspaceFactoryHelper.addRepoMappings(builder, kwargs, externalRepoName, loc);
RuleClass ruleClass = ruleFactory.getRuleClass(ruleClassName);
RuleClass bindRuleClass = ruleFactory.getRuleClass("bind");
diff --git a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
index cabe2c1..c7658b4 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/WorkspaceGlobals.java
@@ -27,7 +27,6 @@
import com.google.devtools.build.lib.cmdline.LabelValidator;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.cmdline.TargetPattern;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.Package.NameConflictException;
import com.google.devtools.build.lib.packages.RuleFactory.InvalidRuleException;
import com.google.devtools.build.lib.skylarkbuildapi.WorkspaceGlobalsApi;
@@ -35,6 +34,7 @@
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.NoneType;
import com.google.devtools.build.lib.syntax.Sequence;
+import com.google.devtools.build.lib.syntax.Starlark;
import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
@@ -69,19 +69,18 @@
public NoneType workspace(
String name,
Dict<?, ?> managedDirectories, // <String, Object>
- Location loc,
StarlarkThread thread)
throws EvalException, InterruptedException {
if (allowOverride) {
if (!isLegalWorkspaceName(name)) {
- throw new EvalException(loc, name + " is not a legal workspace name");
+ throw Starlark.errorf("%s is not a legal workspace name", name);
}
String errorMessage = LabelValidator.validateTargetName(name);
if (errorMessage != null) {
- throw new EvalException(loc, errorMessage);
+ throw Starlark.errorf("%s", errorMessage);
}
- PackageFactory.getContext(thread, loc).pkgBuilder.setWorkspaceName(name);
- Package.Builder builder = PackageFactory.getContext(thread, loc).pkgBuilder;
+ PackageFactory.getContext(thread).pkgBuilder.setWorkspaceName(name);
+ Package.Builder builder = PackageFactory.getContext(thread).pkgBuilder;
RuleClass localRepositoryRuleClass = ruleFactory.getRuleClass("local_repository");
RuleClass bindRuleClass = ruleFactory.getRuleClass("bind");
Map<String, Object> kwargs = ImmutableMap.<String, Object>of("name", name, "path", ".");
@@ -89,9 +88,9 @@
// This effectively adds a "local_repository(name = "<ws>", path = ".")"
// definition to the WORKSPACE file.
WorkspaceFactoryHelper.createAndAddRepositoryRule(
- builder, localRepositoryRuleClass, bindRuleClass, kwargs, loc);
+ builder, localRepositoryRuleClass, bindRuleClass, kwargs, thread.getCallerLocation());
} catch (InvalidRuleException | NameConflictException | LabelSyntaxException e) {
- throw new EvalException(loc, e.getMessage());
+ throw Starlark.errorf("%s", e.getMessage());
}
// Add entry in repository map from "@name" --> "@" to avoid issue where bazel
// treats references to @name as a separate external repo
@@ -100,51 +99,42 @@
RepositoryName.createFromValidStrippedName(name),
RepositoryName.MAIN);
parseManagedDirectories(
- managedDirectories.getContents(String.class, Object.class, "managed_directories"), loc);
+ managedDirectories.getContents(String.class, Object.class, "managed_directories"));
return NONE;
} else {
- throw new EvalException(
- loc, "workspace() function should be used only at the top of the WORKSPACE file");
+ throw Starlark.errorf(
+ "workspace() function should be used only at the top of the WORKSPACE file");
}
}
@Override
- public NoneType dontSymlinkDirectoriesInExecroot(
- Sequence<?> paths, Location location, StarlarkThread thread)
+ public NoneType dontSymlinkDirectoriesInExecroot(Sequence<?> paths, StarlarkThread thread)
throws EvalException, InterruptedException {
List<String> pathsList = paths.getContents(String.class, "paths");
Set<String> set = Sets.newHashSet();
for (String path : pathsList) {
PathFragment pathFragment = PathFragment.create(path);
if (pathFragment.isEmpty()) {
- throw new EvalException(
- location, "Empty path can not be passed to dont_symlink_directories_in_execroot.");
+ throw Starlark.errorf(
+ "Empty path can not be passed to dont_symlink_directories_in_execroot.");
}
if (pathFragment.containsUplevelReferences() || pathFragment.segmentCount() > 1) {
- throw new EvalException(
- location,
- String.format(
- "dont_symlink_directories_in_execroot can only accept "
- + "top level directories under workspace, "
- + "\"%s\" can not be specified as an attribute.",
- path));
+ throw Starlark.errorf(
+ "dont_symlink_directories_in_execroot can only accept top level directories under"
+ + " workspace, \"%s\" can not be specified as an attribute.",
+ path);
}
if (pathFragment.isAbsolute()) {
- throw new EvalException(
- location,
- String.format(
- "dont_symlink_directories_in_execroot can only accept "
- + "top level directories under workspace, "
- + "absolute path \"%s\" can not be specified as an attribute.",
- path));
+ throw Starlark.errorf(
+ "dont_symlink_directories_in_execroot can only accept top level directories under"
+ + " workspace, absolute path \"%s\" can not be specified as an attribute.",
+ path);
}
if (!set.add(pathFragment.getBaseName())) {
- throw new EvalException(
- location,
- String.format(
- "dont_symlink_directories_in_execroot should not "
- + "contain duplicate values: \"%s\" is specified more then once.",
- path));
+ throw Starlark.errorf(
+ "dont_symlink_directories_in_execroot should not contain duplicate values: \"%s\" is"
+ + " specified more then once.",
+ path);
}
}
doNotSymlinkInExecrootPaths = ImmutableSortedSet.copyOf(set);
@@ -152,89 +142,72 @@
}
private void parseManagedDirectories(
- Map<String, ?> managedDirectories, // <String, Sequence<String>>
- Location loc)
+ Map<String, ?> managedDirectories) // <String, Sequence<String>>
throws EvalException {
Map<PathFragment, String> nonNormalizedPathsMap = Maps.newHashMap();
for (Map.Entry<String, ?> entry : managedDirectories.entrySet()) {
- RepositoryName repositoryName = createRepositoryName(entry.getKey(), loc);
+ RepositoryName repositoryName = createRepositoryName(entry.getKey());
List<PathFragment> paths =
- getManagedDirectoriesPaths(entry.getValue(), loc, nonNormalizedPathsMap);
+ getManagedDirectoriesPaths(entry.getValue(), nonNormalizedPathsMap);
for (PathFragment dir : paths) {
PathFragment floorKey = managedDirectoriesMap.floorKey(dir);
if (dir.equals(floorKey)) {
- throw new EvalException(
- loc,
- String.format(
- "managed_directories attribute should not contain multiple"
- + " (or duplicate) repository mappings for the same directory ('%s').",
- nonNormalizedPathsMap.get(dir)));
+ throw Starlark.errorf(
+ "managed_directories attribute should not contain multiple"
+ + " (or duplicate) repository mappings for the same directory ('%s').",
+ nonNormalizedPathsMap.get(dir));
}
PathFragment ceilingKey = managedDirectoriesMap.ceilingKey(dir);
boolean isDescendant = floorKey != null && dir.startsWith(floorKey);
if (isDescendant || (ceilingKey != null && ceilingKey.startsWith(dir))) {
- throw new EvalException(
- loc,
- String.format(
- "managed_directories attribute value can not contain nested mappings."
- + " '%s' is a descendant of '%s'.",
- nonNormalizedPathsMap.get(isDescendant ? dir : ceilingKey),
- nonNormalizedPathsMap.get(isDescendant ? floorKey : dir)));
+ throw Starlark.errorf(
+ "managed_directories attribute value can not contain nested mappings."
+ + " '%s' is a descendant of '%s'.",
+ nonNormalizedPathsMap.get(isDescendant ? dir : ceilingKey),
+ nonNormalizedPathsMap.get(isDescendant ? floorKey : dir));
}
managedDirectoriesMap.put(dir, repositoryName);
}
}
}
- private static RepositoryName createRepositoryName(String key, Location location)
- throws EvalException {
+ private static RepositoryName createRepositoryName(String key) throws EvalException {
if (!key.startsWith("@")) {
- throw new EvalException(
- location,
- String.format(
- "Cannot parse repository name '%s'. Repository name should start with '@'.", key));
+ throw Starlark.errorf(
+ "Cannot parse repository name '%s'. Repository name should start with '@'.", key);
}
try {
return RepositoryName.create(key);
} catch (LabelSyntaxException e) {
- throw new EvalException(location, e);
+ throw Starlark.errorf("%s", e);
}
}
private static List<PathFragment> getManagedDirectoriesPaths(
- Object directoriesList, Location location, Map<PathFragment, String> nonNormalizedPathsMap)
+ Object directoriesList, Map<PathFragment, String> nonNormalizedPathsMap)
throws EvalException {
if (!(directoriesList instanceof Sequence)) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"managed_directories attribute value should be of the type attr.string_list_dict(),"
+ " mapping repository name to the list of managed directories.");
}
List<PathFragment> result = Lists.newArrayList();
for (Object obj : (Sequence) directoriesList) {
if (!(obj instanceof String)) {
- throw new EvalException(
- location,
- String.format("Expected managed directory path (as string), but got '%s'.", obj));
+ throw Starlark.errorf("Expected managed directory path (as string), but got '%s'.", obj);
}
String path = ((String) obj).trim();
if (path.isEmpty()) {
- throw new EvalException(
- location, "Expected managed directory path to be non-empty string.");
+ throw Starlark.errorf("Expected managed directory path to be non-empty string.");
}
PathFragment pathFragment = PathFragment.create(path);
if (pathFragment.isAbsolute()) {
- throw new EvalException(
- location,
- String.format(
- "Expected managed directory path ('%s') to be relative to the workspace root.",
- path));
+ throw Starlark.errorf(
+ "Expected managed directory path ('%s') to be relative to the workspace root.", path);
}
if (pathFragment.containsUplevelReferences()) {
- throw new EvalException(
- location,
- String.format(
- "Expected managed directory path ('%s') to be under the workspace root.", path));
+ throw Starlark.errorf(
+ "Expected managed directory path ('%s') to be under the workspace root.", path);
}
nonNormalizedPathsMap.put(pathFragment, path);
result.add(pathFragment);
@@ -270,52 +243,50 @@
}
@Override
- public NoneType registerExecutionPlatforms(
- Sequence<?> platformLabels, Location location, StarlarkThread thread)
+ public NoneType registerExecutionPlatforms(Sequence<?> platformLabels, StarlarkThread thread)
throws EvalException, InterruptedException {
// Add to the package definition for later.
- Package.Builder builder = PackageFactory.getContext(thread, location).pkgBuilder;
+ Package.Builder builder = PackageFactory.getContext(thread).pkgBuilder;
List<String> patterns = platformLabels.getContents(String.class, "platform_labels");
builder.addRegisteredExecutionPlatforms(renamePatterns(patterns, builder, thread));
return NONE;
}
@Override
- public NoneType registerToolchains(
- Sequence<?> toolchainLabels, Location location, StarlarkThread thread)
+ public NoneType registerToolchains(Sequence<?> toolchainLabels, StarlarkThread thread)
throws EvalException, InterruptedException {
// Add to the package definition for later.
- Package.Builder builder = PackageFactory.getContext(thread, location).pkgBuilder;
+ Package.Builder builder = PackageFactory.getContext(thread).pkgBuilder;
List<String> patterns = toolchainLabels.getContents(String.class, "toolchain_labels");
builder.addRegisteredToolchains(renamePatterns(patterns, builder, thread));
return NONE;
}
@Override
- public NoneType bind(String name, Object actual, Location loc, StarlarkThread thread)
+ public NoneType bind(String name, Object actual, StarlarkThread thread)
throws EvalException, InterruptedException {
Label nameLabel;
try {
nameLabel = Label.parseAbsolute("//external:" + name, ImmutableMap.of());
- try {
- Package.Builder builder = PackageFactory.getContext(thread, loc).pkgBuilder;
- RuleClass ruleClass = ruleFactory.getRuleClass("bind");
- WorkspaceFactoryHelper.addBindRule(
- builder,
- ruleClass,
- nameLabel,
- actual == NONE ? null : Label.parseAbsolute((String) actual, ImmutableMap.of()),
- loc,
- new AttributeContainer(ruleClass));
- } catch (RuleFactory.InvalidRuleException
- | Package.NameConflictException
- | LabelSyntaxException e) {
- throw new EvalException(loc, e.getMessage());
- }
-
} catch (LabelSyntaxException e) {
- throw new EvalException(loc, e.getMessage());
+ throw Starlark.errorf("%s", e.getMessage());
}
+ try {
+ Package.Builder builder = PackageFactory.getContext(thread).pkgBuilder;
+ RuleClass ruleClass = ruleFactory.getRuleClass("bind");
+ WorkspaceFactoryHelper.addBindRule(
+ builder,
+ ruleClass,
+ nameLabel,
+ actual == NONE ? null : Label.parseAbsolute((String) actual, ImmutableMap.of()),
+ thread.getCallerLocation(),
+ new AttributeContainer(ruleClass));
+ } catch (RuleFactory.InvalidRuleException
+ | Package.NameConflictException
+ | LabelSyntaxException e) {
+ throw Starlark.errorf("%s", e.getMessage());
+ }
+
return NONE;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
index 3d919ab..1168eaa 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSkylarkData.java
@@ -90,12 +90,10 @@
Sequence<?> deps, // <AndroidResourcesInfo>
Sequence<?> assets, // <AndroidAssetsInfo>
boolean neverlink,
- String customPackage,
- Location location,
- StarlarkThread thread)
+ String customPackage)
throws InterruptedException, EvalException {
try (SkylarkErrorReporter errorReporter =
- SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+ SkylarkErrorReporter.from(ctx.getRuleErrorConsumer())) {
return ResourceApk.processFromTransitiveLibraryData(
ctx,
DataBinding.getDisabledDataBindingContext(ctx),
@@ -113,16 +111,11 @@
@Override
public AndroidManifestInfo stampAndroidManifest(
- AndroidDataContext ctx,
- Object manifest,
- Object customPackage,
- boolean exported,
- Location location,
- StarlarkThread thread)
+ AndroidDataContext ctx, Object manifest, Object customPackage, boolean exported)
throws InterruptedException, EvalException {
String pkg = fromNoneable(customPackage, String.class);
try (SkylarkErrorReporter errorReporter =
- SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location)) {
+ SkylarkErrorReporter.from(ctx.getRuleErrorConsumer())) {
return AndroidManifest.from(
ctx,
errorReporter,
@@ -141,12 +134,9 @@
Object assets,
Object assetsDir,
Sequence<?> deps, // <AndroidAssetsInfo>
- boolean neverlink,
- Location location,
- StarlarkThread thread)
+ boolean neverlink)
throws EvalException, InterruptedException {
- SkylarkErrorReporter errorReporter =
- SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
+ SkylarkErrorReporter errorReporter = SkylarkErrorReporter.from(ctx.getRuleErrorConsumer());
try {
return AndroidAssets.from(
errorReporter,
@@ -169,12 +159,9 @@
Sequence<?> resources, // <ConfiguredTarget>
Sequence<?> deps, // <AndroidResourcesInfo>
boolean neverlink,
- boolean enableDataBinding,
- Location location,
- StarlarkThread thread)
+ boolean enableDataBinding)
throws EvalException, InterruptedException {
- SkylarkErrorReporter errorReporter =
- SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
+ SkylarkErrorReporter errorReporter = SkylarkErrorReporter.from(ctx.getRuleErrorConsumer());
try {
return AndroidResources.from(
errorReporter,
@@ -199,12 +186,10 @@
Sequence<?> resources, // <ConfiguredTarget>
Sequence<?> deps, // <AndroidResourcesInfo>
boolean neverlink,
- boolean enableDataBinding,
- Location location,
- StarlarkThread thread)
+ boolean enableDataBinding)
throws EvalException, InterruptedException {
ValidatedAndroidResources validated =
- mergeRes(ctx, manifest, resources, deps, neverlink, enableDataBinding, location, thread);
+ mergeRes(ctx, manifest, resources, deps, neverlink, enableDataBinding);
JavaInfo javaInfo =
getJavaInfoForRClassJar(validated.getClassJar(), validated.getJavaSourceJar());
return Dict.of(
@@ -313,12 +298,9 @@
String aaptVersionString,
Dict<?, ?> manifestValues, // <String, String>
Sequence<?> deps, // <ConfiguredTarget>
- Sequence<?> noCompressExtensions, // <String>
- Location location,
- StarlarkThread thread)
+ Sequence<?> noCompressExtensions) // <String>
throws InterruptedException, EvalException {
- SkylarkErrorReporter errorReporter =
- SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
+ SkylarkErrorReporter errorReporter = SkylarkErrorReporter.from(ctx.getRuleErrorConsumer());
List<ConfiguredTarget> depsTargets = deps.getContents(ConfiguredTarget.class, "deps");
try {
@@ -386,9 +368,7 @@
Object shrinkResources,
Sequence<?> resourceConfigurationFilters, // <String>
Sequence<?> densities, // <String>
- Sequence<?> noCompressExtensions, // <String>
- Location location,
- StarlarkThread thread)
+ Sequence<?> noCompressExtensions) // <String>
throws EvalException {
return new BinaryDataSettings(
fromNoneableOrDefault(
@@ -410,16 +390,10 @@
* Helper method to get default {@link
* com.google.devtools.build.lib.rules.android.AndroidSkylarkData.BinaryDataSettings}.
*/
- private BinaryDataSettings defaultBinaryDataSettings(
- AndroidDataContext ctx, Location location, StarlarkThread thread) throws EvalException {
+ private BinaryDataSettings defaultBinaryDataSettings(AndroidDataContext ctx)
+ throws EvalException {
return makeBinarySettings(
- ctx,
- Starlark.NONE,
- StarlarkList.empty(),
- StarlarkList.empty(),
- StarlarkList.empty(),
- location,
- thread);
+ ctx, Starlark.NONE, StarlarkList.empty(), StarlarkList.empty(), StarlarkList.empty());
}
private static class BinaryDataSettings implements AndroidBinaryDataSettingsApi {
@@ -450,12 +424,9 @@
String manifestMerger,
Object maybeSettings,
boolean crunchPng,
- boolean dataBindingEnabled,
- Location location,
- StarlarkThread thread)
+ boolean dataBindingEnabled)
throws InterruptedException, EvalException {
- SkylarkErrorReporter errorReporter =
- SkylarkErrorReporter.from(ctx.getRuleErrorConsumer(), location);
+ SkylarkErrorReporter errorReporter = SkylarkErrorReporter.from(ctx.getRuleErrorConsumer());
List<ConfiguredTarget> depsTargets = deps.getContents(ConfiguredTarget.class, "deps");
Map<String, String> manifestValueMap =
manifestValues.getContents(String.class, String.class, "manifest_values");
@@ -463,9 +434,7 @@
try {
BinaryDataSettings settings =
fromNoneableOrDefault(
- maybeSettings,
- BinaryDataSettings.class,
- defaultBinaryDataSettings(ctx, location, thread));
+ maybeSettings, BinaryDataSettings.class, defaultBinaryDataSettings(ctx));
AndroidManifest rawManifest =
AndroidManifest.from(
@@ -542,15 +511,11 @@
Object maybeSettings,
Sequence<?> deps, // <ConfiguredTarget>
Sequence<?> localProguardSpecs, // <ConfiguredTarget>
- Sequence<?> extraProguardSpecs, // <ConfiguredTarget>
- Location location,
- StarlarkThread thread)
+ Sequence<?> extraProguardSpecs) // <ConfiguredTarget>
throws EvalException, InterruptedException {
BinaryDataSettings settings =
fromNoneableOrDefault(
- maybeSettings,
- BinaryDataSettings.class,
- defaultBinaryDataSettings(ctx, location, thread));
+ maybeSettings, BinaryDataSettings.class, defaultBinaryDataSettings(ctx));
List<ConfiguredTarget> depsTargets = deps.getContents(ConfiguredTarget.class, "deps");
if (!settings.shrinkResources) {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java
index e5ee6b9..ef451b8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkInfo.java
@@ -15,7 +15,6 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.skylarkbuildapi.android.ApkInfoApi;
@@ -93,9 +92,8 @@
}
@Override
- public ApkInfoApi<?> createInfo(Dict<String, Object> kwargs, Location loc)
- throws EvalException {
- return throwUnsupportedConstructorException(loc);
+ public ApkInfoApi<?> createInfo(Dict<String, Object> kwargs) throws EvalException {
+ return throwUnsupportedConstructorException();
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java
index b6b1321..e67acae 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigGlobalLibrary.java
@@ -20,13 +20,13 @@
import com.google.devtools.build.lib.analysis.config.StarlarkDefinedConfigTransition;
import com.google.devtools.build.lib.analysis.skylark.StarlarkTransition.Settings;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigGlobalLibraryApi;
import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigurationTransitionApi;
import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.Dict;
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.StarlarkSemantics;
import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.HashSet;
@@ -45,16 +45,15 @@
BaseFunction implementation,
Sequence<?> inputs, // <String> expected
Sequence<?> outputs, // <String> expected
- Location location,
StarlarkThread thread)
throws EvalException {
StarlarkSemantics semantics = thread.getSemantics();
List<String> inputsList = inputs.getContents(String.class, "inputs");
List<String> outputsList = outputs.getContents(String.class, "outputs");
validateBuildSettingKeys(
- inputsList, Settings.INPUTS, location, semantics.experimentalStarlarkConfigTransitions());
+ inputsList, Settings.INPUTS, semantics.experimentalStarlarkConfigTransitions());
validateBuildSettingKeys(
- outputsList, Settings.OUTPUTS, location, semantics.experimentalStarlarkConfigTransitions());
+ outputsList, Settings.OUTPUTS, semantics.experimentalStarlarkConfigTransitions());
return StarlarkDefinedConfigTransition.newRegularTransition(
implementation, inputsList, outputsList, semantics, thread);
}
@@ -62,18 +61,18 @@
@Override
public ConfigurationTransitionApi analysisTestTransition(
Dict<?, ?> changedSettings, // <String, String> expected
- Location location)
+ StarlarkThread thread)
throws EvalException {
Map<String, Object> changedSettingsMap =
changedSettings.getContents(String.class, Object.class, "changed_settings dict");
- validateBuildSettingKeys(changedSettingsMap.keySet(), Settings.OUTPUTS, location, true);
- return StarlarkDefinedConfigTransition.newAnalysisTestTransition(changedSettingsMap, location);
+ validateBuildSettingKeys(changedSettingsMap.keySet(), Settings.OUTPUTS, true);
+ return StarlarkDefinedConfigTransition.newAnalysisTestTransition(
+ changedSettingsMap, thread.getCallerLocation());
}
private void validateBuildSettingKeys(
Iterable<String> optionKeys,
Settings keyErrorDescriptor,
- Location location,
boolean starlarkTransitionsEnabled)
throws EvalException {
@@ -83,8 +82,7 @@
for (String optionKey : optionKeys) {
if (!optionKey.startsWith(COMMAND_LINE_OPTION_PREFIX)) {
if (!starlarkTransitionsEnabled) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"transitions on Starlark-defined build settings is experimental and "
+ "disabled by default. This API is in development and subject to change at any"
+ "time. Use --experimental_starlark_config_transitions to use this experimental "
@@ -93,29 +91,22 @@
try {
Label.parseAbsoluteUnchecked(optionKey);
} catch (IllegalArgumentException e) {
- throw new EvalException(
- location,
- String.format(
- "invalid transition %s '%s'. If this is intended as a native option, "
- + "it must begin with //command_line_option:",
- singularErrorDescriptor, optionKey),
- e);
+ throw Starlark.errorf(
+ "invalid transition %s '%s'. If this is intended as a native option, "
+ + "it must begin with //command_line_option: %s",
+ singularErrorDescriptor, optionKey, e.getMessage());
}
} else {
String optionName = optionKey.substring(COMMAND_LINE_OPTION_PREFIX.length());
if (optionName.startsWith("experimental_") || optionName.startsWith("incompatible_")) {
- throw new EvalException(
- location,
- String.format(
- "Invalid transition %s '%s'. Cannot transition on --experimental_* or "
- + "--incompatible_* options",
- singularErrorDescriptor, optionKey));
+ throw Starlark.errorf(
+ "Invalid transition %s '%s'. Cannot transition on --experimental_* or "
+ + "--incompatible_* options",
+ singularErrorDescriptor, optionKey);
}
}
if (!processedOptions.add(optionKey)) {
- throw new EvalException(
- location,
- String.format("duplicate transition %s '%s'", singularErrorDescriptor, optionKey));
+ throw Starlark.errorf("duplicate transition %s '%s'", singularErrorDescriptor, optionKey);
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
index c92e031..a8c1cef 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationOutputs.java
@@ -21,7 +21,6 @@
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcCompilationOutputsApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
@@ -104,11 +103,11 @@
}
@Override
- public Sequence<Artifact> getSkylarkObjectFiles(
- boolean usePic, Location location, StarlarkThread thread) throws EvalException {
+ public Sequence<Artifact> getSkylarkObjectFiles(boolean usePic, StarlarkThread thread)
+ throws EvalException {
CcCommon.checkLocationWhitelisted(
thread.getSemantics(),
- location,
+ thread.getCallerLocation(),
((Label) thread.getGlobals().getLabel()).getPackageIdentifier().toString());
return StarlarkList.immutableCopyOf(getObjectFiles(usePic));
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java
index d7f3717..e97d95a 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcInfo.java
@@ -18,13 +18,11 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Starlark;
-import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Collection;
import javax.annotation.Nullable;
@@ -156,11 +154,7 @@
}
@Override
- public CcInfoApi createInfo(
- Object skylarkCcCompilationContext,
- Object skylarkCcLinkingInfo,
- Location location,
- StarlarkThread thread)
+ public CcInfoApi createInfo(Object skylarkCcCompilationContext, Object skylarkCcLinkingInfo)
throws EvalException {
CcCompilationContext ccCompilationContext =
nullIfNone(skylarkCcCompilationContext, CcCompilationContext.class);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index 8806e8f..4527907 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -136,8 +136,7 @@
if (ruleContext == null
&& toolchain
.requireCtxInConfigureFeatures()) {
- throw new EvalException(
- Location.BUILTIN,
+ throw Starlark.errorf(
"Incompatible flag --incompatible_require_ctx_in_configure_features has been flipped, "
+ "and the mandatory parameter 'ctx' of cc_common.configure_features is missing. "
+ "Please add 'ctx' as a named parameter. See "
@@ -354,7 +353,7 @@
} else if (o instanceof NoneType) {
return ImmutableList.of();
} else {
- throw new EvalException(Location.BUILTIN, "Only list is allowed.");
+ throw Starlark.errorf("Only list is allowed.");
}
}
@@ -387,7 +386,6 @@
boolean alwayslink,
String dynamicLibraryPath,
String interfaceLibraryPath,
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException {
SkylarkActionFactory skylarkActionFactory =
@@ -408,7 +406,6 @@
if (!Strings.isNullOrEmpty(dynamicLibraryPath)) {
dynamicLibraryPathFragment = PathFragment.create(dynamicLibraryPath);
validateSymlinkPath(
- location,
"dynamic_library_symlink_path",
dynamicLibraryPathFragment,
Link.ONLY_SHARED_LIBRARY_FILETYPES,
@@ -419,7 +416,6 @@
if (!Strings.isNullOrEmpty(interfaceLibraryPath)) {
interfaceLibraryPathFragment = PathFragment.create(interfaceLibraryPath);
validateSymlinkPath(
- location,
"interface_library_symlink_path",
interfaceLibraryPathFragment,
Link.ONLY_INTERFACE_LIBRARY_FILETYPES,
@@ -477,11 +473,11 @@
notNullArtifactForIdentifier = interfaceLibrary;
}
if (notNullArtifactForIdentifier == null) {
- throw new EvalException(location, "Must pass at least one artifact");
+ throw Starlark.errorf("Must pass at least one artifact");
}
String extensionErrors = extensionErrorsBuilder.toString();
if (!extensionErrors.isEmpty()) {
- throw new EvalException(location, extensionErrors);
+ throw Starlark.errorf("%s", extensionErrors);
}
Artifact resolvedSymlinkDynamicLibrary = null;
@@ -491,15 +487,13 @@
resolvedSymlinkDynamicLibrary = dynamicLibrary;
if (dynamicLibraryPathFragment != null) {
if (dynamicLibrary.getRootRelativePath().getSegment(0).startsWith("_solib_")) {
- throw new EvalException(
- location,
- String.format(
- "dynamic_library must not be a symbolic link in the solib directory. Got '%s'",
- dynamicLibrary.getRootRelativePath()));
+ throw Starlark.errorf(
+ "dynamic_library must not be a symbolic link in the solib directory. Got '%s'",
+ dynamicLibrary.getRootRelativePath());
}
dynamicLibrary =
SolibSymlinkAction.getDynamicLibrarySymlink(
- skylarkActionFactory.asActionRegistry(location, skylarkActionFactory),
+ skylarkActionFactory.asActionRegistry(skylarkActionFactory),
skylarkActionFactory.getActionConstructionContext(),
ccToolchainProvider.getSolibDirectory(),
dynamicLibrary,
@@ -507,7 +501,7 @@
} else {
dynamicLibrary =
SolibSymlinkAction.getDynamicLibrarySymlink(
- skylarkActionFactory.asActionRegistry(location, skylarkActionFactory),
+ skylarkActionFactory.asActionRegistry(skylarkActionFactory),
skylarkActionFactory.getActionConstructionContext(),
ccToolchainProvider.getSolibDirectory(),
dynamicLibrary,
@@ -519,17 +513,13 @@
resolvedSymlinkInterfaceLibrary = interfaceLibrary;
if (interfaceLibraryPathFragment != null) {
if (interfaceLibrary.getRootRelativePath().getSegment(0).startsWith("_solib_")) {
- throw new EvalException(
- location,
- String.format(
- "interface_library must not be a symbolic link in the solib directory. Got"
- + " '%s'",
- interfaceLibrary.getRootRelativePath()));
+ throw Starlark.errorf(
+ "interface_library must not be a symbolic link in the solib directory. Got '%s'",
+ interfaceLibrary.getRootRelativePath());
}
interfaceLibrary =
SolibSymlinkAction.getDynamicLibrarySymlink(
- /* actionRegistry= */ skylarkActionFactory.asActionRegistry(
- location, skylarkActionFactory),
+ /* actionRegistry= */ skylarkActionFactory.asActionRegistry(skylarkActionFactory),
/* actionConstructionContext= */ skylarkActionFactory
.getActionConstructionContext(),
ccToolchainProvider.getSolibDirectory(),
@@ -538,8 +528,7 @@
} else {
interfaceLibrary =
SolibSymlinkAction.getDynamicLibrarySymlink(
- /* actionRegistry= */ skylarkActionFactory.asActionRegistry(
- location, skylarkActionFactory),
+ /* actionRegistry= */ skylarkActionFactory.asActionRegistry(skylarkActionFactory),
/* actionConstructionContext= */ skylarkActionFactory
.getActionConstructionContext(),
ccToolchainProvider.getSolibDirectory(),
@@ -553,8 +542,7 @@
&& picStaticLibrary == null
&& dynamicLibrary == null
&& interfaceLibrary == null) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"Must pass at least one of the following parameters: static_library, pic_static_library, "
+ "dynamic_library and interface_library.");
}
@@ -571,7 +559,6 @@
}
private static void validateSymlinkPath(
- Location location,
String attrName,
PathFragment symlinkPath,
FileTypeSet filetypes,
@@ -580,9 +567,7 @@
if (symlinkPath.isEmpty()
|| symlinkPath.isAbsolute()
|| symlinkPath.containsUplevelReferences()) {
- throw new EvalException(
- location,
- String.format("%s must be a relative file path. Got '%s'", attrName, symlinkPath));
+ throw Starlark.errorf("%s must be a relative file path. Got '%s'", attrName, symlinkPath);
}
if (!filetypes.matches(symlinkPath.getBaseName())) {
errorsBuilder.append(
@@ -660,10 +645,8 @@
Object librariesToLinkObject,
Object userLinkFlagsObject,
Object nonCodeInputs, // <FileT> expected
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException {
-
LinkOptions options =
LinkOptions.of(
Depset.getSetFromNoneableParam(userLinkFlagsObject, String.class, "user_link_flags")
@@ -688,7 +671,6 @@
Object librariesToLinkObject,
Object userLinkFlagsObject,
Object nonCodeInputsObject,
- Location location,
StarlarkThread thread)
throws EvalException {
if (EvalUtils.isNullOrNone(linkerInputs)) {
@@ -720,7 +702,7 @@
return ccLinkingContextBuilder.build();
}
- throw new EvalException(location, "Must pass libraries_to_link, user_link_flags or both.");
+ throw Starlark.errorf("Must pass libraries_to_link, user_link_flags or both.");
} else {
CcLinkingContext.Builder ccLinkingContextBuilder = CcLinkingContext.builder();
ccLinkingContextBuilder.addTransitiveLinkerInputs(
@@ -735,8 +717,7 @@
Sequence<String> nonCodeInputs = nullIfNone(nonCodeInputsObject, Sequence.class);
if (librariesToLink != null || userLinkFlags != null || nonCodeInputs != null) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"If you pass linker_inputs you are using the new API. "
+ "Just pass linker_inputs. Do not mix old and new API parameters.");
}
@@ -956,14 +937,12 @@
private static void checkRightSkylarkInfoProvider(
Object o, String parameterName, String expectedProvider) throws EvalException {
if (!(o instanceof SkylarkInfo)) {
- throw new EvalException(
- Location.BUILTIN,
- String.format(
- "'%s' parameter of cc_common.create_cc_toolchain_config_info() contains an element"
- + " of type '%s' instead of a '%s' provider. Use the methods provided in"
- + " https://source.bazel.build/bazel/+/master:tools/cpp/cc_toolchain_config_lib.bzl"
- + " for obtaining the right providers.",
- parameterName, EvalUtils.getDataTypeName(o), expectedProvider));
+ throw Starlark.errorf(
+ "'%s' parameter of cc_common.create_cc_toolchain_config_info() contains an element"
+ + " of type '%s' instead of a '%s' provider. Use the methods provided in"
+ + " https://source.bazel.build/bazel/+/master:tools/cpp/cc_toolchain_config_lib.bzl"
+ + " for obtaining the right providers.",
+ parameterName, EvalUtils.getDataTypeName(o), expectedProvider);
}
}
@@ -1475,15 +1454,14 @@
boolean disallowStaticLibraries,
boolean disallowDynamicLibraries,
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException {
- validateLanguage(location, language);
+ validateLanguage(language);
SkylarkActionFactory actions = skylarkActionFactoryApi;
CcToolchainProvider ccToolchainProvider = convertFromNoneable(skylarkCcToolchainProvider, null);
FeatureConfigurationForStarlark featureConfiguration =
convertFromNoneable(skylarkFeatureConfiguration, null);
- Label label = getCallerLabel(location, actions, name);
+ Label label = getCallerLabel(actions, name);
FdoContext fdoContext = ccToolchainProvider.getFdoContext();
LinkTargetType staticLinkTargetType = null;
if (language.equals(Language.CPP.getRepresentation())) {
@@ -1498,7 +1476,7 @@
new CcLinkingHelper(
actions.getActionConstructionContext().getRuleErrorConsumer(),
label,
- actions.asActionRegistry(location, actions),
+ actions.asActionRegistry(actions),
actions.getActionConstructionContext(),
getSemantics(),
featureConfiguration.getFeatureConfiguration(),
@@ -1549,41 +1527,33 @@
.build()),
ccLinkingOutputs);
} catch (RuleErrorException e) {
- throw new EvalException(location, e);
+ throw Starlark.errorf("%s", e.getMessage());
}
}
- protected void validateLanguage(Location location, String language) throws EvalException {
+ protected void validateLanguage(String language) throws EvalException {
if (!Arrays.stream(Language.values())
.map(Language::getRepresentation)
.collect(ImmutableList.toImmutableList())
.contains(language)) {
- throw new EvalException(location, "Language '" + language + "' is not supported");
+ throw Starlark.errorf("Language '%s' is not supported", language);
}
}
- protected void validateOutputType(Location location, String outputType) throws EvalException {
+ protected void validateOutputType(String outputType) throws EvalException {
if (!SUPPORTED_OUTPUT_TYPES.contains(outputType)) {
- throw new EvalException(location, "Output type '" + outputType + "' is not supported");
+ throw Starlark.errorf("Output type '%s' is not supported", outputType);
}
}
- protected Label getCallerLabel(Location location, SkylarkActionFactory actions, String name)
- throws EvalException {
- Label label;
+ protected Label getCallerLabel(SkylarkActionFactory actions, String name) throws EvalException {
try {
- label =
- Label.create(
- actions
- .getActionConstructionContext()
- .getActionOwner()
- .getLabel()
- .getPackageIdentifier(),
- name);
+ return Label.create(
+ actions.getActionConstructionContext().getActionOwner().getLabel().getPackageIdentifier(),
+ name);
} catch (LabelSyntaxException e) {
- throw new EvalException(location, e);
+ throw Starlark.errorf("%s", e.getMessage());
}
- return label;
}
protected Tuple<Object> compile(
@@ -1607,8 +1577,7 @@
Artifact grepIncludes,
List<Artifact> headersForClifDoNotUseThisParam,
Sequence<?> additionalInputs,
- Location location,
- @Nullable StarlarkThread thread)
+ StarlarkThread thread)
throws EvalException, InterruptedException {
List<Artifact> sources = sourcesUnchecked.getContents(Artifact.class, "srcs");
List<Artifact> publicHeaders = publicHeadersUnchecked.getContents(Artifact.class, "srcs");
@@ -1618,35 +1587,32 @@
CcToolchainProvider ccToolchainProvider = convertFromNoneable(skylarkCcToolchainProvider, null);
FeatureConfigurationForStarlark featureConfiguration =
convertFromNoneable(skylarkFeatureConfiguration, null);
- Label label = getCallerLabel(location, actions, name);
+ Label label = getCallerLabel(actions, name);
FdoContext fdoContext = ccToolchainProvider.getFdoContext();
validateExtensions(
- location,
"srcs",
sources,
CppFileTypes.ALL_C_CLASS_SOURCE,
FileTypeSet.of(CppFileTypes.CPP_SOURCE, CppFileTypes.C_SOURCE));
validateExtensions(
- location,
"public_hdrs",
publicHeaders,
FileTypeSet.of(CppFileTypes.CPP_HEADER),
FileTypeSet.of(CppFileTypes.CPP_HEADER));
validateExtensions(
- location,
"private_hdrs",
privateHeaders,
FileTypeSet.of(CppFileTypes.CPP_HEADER),
FileTypeSet.of(CppFileTypes.CPP_HEADER));
if (disallowNopicOutputs && disallowPicOutputs) {
- throw new EvalException(location, "Either PIC or no PIC actions have to be created.");
+ throw Starlark.errorf("Either PIC or no PIC actions have to be created.");
}
CcCommon common = new CcCommon(actions.getRuleContext());
CcCompilationHelper helper =
new CcCompilationHelper(
- actions.asActionRegistry(location, actions),
+ actions.asActionRegistry(actions),
actions.getActionConstructionContext(),
label,
grepIncludes,
@@ -1701,7 +1667,7 @@
return Tuple.of(
compilationInfo.getCcCompilationContext(), compilationInfo.getCcCompilationOutputs());
} catch (RuleErrorException e) {
- throw new EvalException(location, e);
+ throw Starlark.errorf("%s", e.getMessage());
}
}
@@ -1718,15 +1684,14 @@
boolean linkDepsStatically,
Sequence<?> additionalInputs,
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException {
- validateLanguage(location, language);
- validateOutputType(location, outputType);
+ validateLanguage(language);
+ validateOutputType(outputType);
CcToolchainProvider ccToolchainProvider = convertFromNoneable(skylarkCcToolchainProvider, null);
FeatureConfigurationForStarlark featureConfiguration =
convertFromNoneable(skylarkFeatureConfiguration, null);
- Label label = getCallerLabel(location, actions, name);
+ Label label = getCallerLabel(actions, name);
FdoContext fdoContext = ccToolchainProvider.getFdoContext();
LinkTargetType dynamicLinkTargetType = null;
if (language.equals(Language.CPP.getRepresentation())) {
@@ -1742,8 +1707,7 @@
&& outputType.equals("executable")) {
dynamicLinkTargetType = LinkTargetType.OBJCPP_EXECUTABLE;
} else {
- throw new EvalException(
- location, "Language '" + language + "' does not support " + outputType);
+ throw Starlark.errorf("Language '%s' does not support %s", language, outputType);
}
FeatureConfiguration actualFeatureConfiguration =
featureConfiguration.getFeatureConfiguration();
@@ -1756,7 +1720,7 @@
new CcLinkingHelper(
actions.getActionConstructionContext().getRuleErrorConsumer(),
label,
- actions.asActionRegistry(location, actions),
+ actions.asActionRegistry(actions),
actions.getActionConstructionContext(),
getSemantics(),
actualFeatureConfiguration,
@@ -1786,27 +1750,25 @@
return helper.link(
compilationOutputs != null ? compilationOutputs : CcCompilationOutputs.EMPTY);
} catch (RuleErrorException e) {
- throw new EvalException(location, e);
+ throw Starlark.errorf("%s", e.getMessage());
}
}
protected CcCompilationOutputs createCompilationOutputsFromSkylark(
- Object objectsObject, Object picObjectsObject, Location location) throws EvalException {
+ Object objectsObject, Object picObjectsObject) throws EvalException {
CcCompilationOutputs.Builder ccCompilationOutputsBuilder = CcCompilationOutputs.builder();
NestedSet<Artifact> objects = convertToNestedSet(objectsObject, Artifact.class, "objects");
- validateExtensions(
- location, "objects", objects.toList(), Link.OBJECT_FILETYPES, Link.OBJECT_FILETYPES);
+ validateExtensions("objects", objects.toList(), Link.OBJECT_FILETYPES, Link.OBJECT_FILETYPES);
NestedSet<Artifact> picObjects =
convertToNestedSet(picObjectsObject, Artifact.class, "pic_objects");
validateExtensions(
- location, "pic_objects", picObjects.toList(), Link.OBJECT_FILETYPES, Link.OBJECT_FILETYPES);
+ "pic_objects", picObjects.toList(), Link.OBJECT_FILETYPES, Link.OBJECT_FILETYPES);
ccCompilationOutputsBuilder.addObjectFiles(objects.toList());
ccCompilationOutputsBuilder.addPicObjectFiles(picObjects.toList());
return ccCompilationOutputsBuilder.build();
}
private void validateExtensions(
- Location location,
String paramName,
List<Artifact> files,
FileTypeSet validFileTypeSet,
@@ -1814,14 +1776,11 @@
throws EvalException {
for (Artifact file : files) {
if (!validFileTypeSet.matches(file.getFilename())) {
- throw new EvalException(
- location,
- String.format(
- "'%s' has wrong extension. The list of possible extensions for '"
- + paramName
- + "' are: %s",
- file.getExecPathString(),
- Joiner.on(",").join(fileTypeForErrorMessage.getExtensions())));
+ throw Starlark.errorf(
+ "'%s' has wrong extension. The list of possible extensions for '%s' is: %s",
+ file.getExecPathString(),
+ paramName,
+ Joiner.on(",").join(fileTypeForErrorMessage.getExtensions()));
}
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
index 03ba47d..5de4841 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfo.java
@@ -419,7 +419,6 @@
Sequence<?> runtimeDeps,
Sequence<?> exports,
Object jdepsApi,
- Location loc,
StarlarkThread thread)
throws EvalException {
Artifact outputJar = (Artifact) outputJarApi;
@@ -427,7 +426,7 @@
@Nullable Artifact sourceJar = nullIfNone(sourceJarApi, Artifact.class);
@Nullable Artifact jdeps = nullIfNone(jdepsApi, Artifact.class);
if (compileJar == null) {
- throw new EvalException(loc, "Expected 'File' for 'compile_jar', found 'None'");
+ throw Starlark.errorf("Expected 'File' for 'compile_jar', found 'None'");
}
return JavaInfoBuildHelper.getInstance()
.createJavaInfo(
@@ -439,7 +438,7 @@
(Sequence<JavaInfo>) runtimeDeps,
(Sequence<JavaInfo>) exports,
jdeps,
- loc);
+ thread.getCallerLocation());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
index dfb2789..9c67e38 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaInfoBuildHelper.java
@@ -42,6 +42,7 @@
import com.google.devtools.build.lib.shell.ShellUtils;
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.StarlarkThread;
import com.google.devtools.build.lib.vfs.FileSystemUtils;
import java.util.ArrayList;
@@ -152,8 +153,7 @@
List<Artifact> sourceFiles,
List<Artifact> sourceJars,
JavaToolchainProvider javaToolchain,
- JavaRuntimeInfo hostJavabase,
- Location location)
+ JavaRuntimeInfo hostJavabase)
throws EvalException {
// No sources to pack, return None
if (sourceFiles.isEmpty() && sourceJars.isEmpty()) {
@@ -163,7 +163,7 @@
if (sourceFiles.isEmpty() && sourceJars.size() == 1) {
return sourceJars.get(0);
}
- ActionRegistry actionRegistry = actions.asActionRegistry(location, actions);
+ ActionRegistry actionRegistry = actions.asActionRegistry(actions);
if (outputSourceJar == null) {
outputSourceJar = getDerivedSourceJar(actions.getActionConstructionContext(), outputJar);
}
@@ -236,7 +236,6 @@
List<Artifact> resources,
Boolean neverlink,
JavaSemantics javaSemantics,
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException {
@@ -244,8 +243,7 @@
&& sourceFiles.isEmpty()
&& exports.isEmpty()
&& exportedPlugins.isEmpty()) {
- throw new EvalException(
- location,
+ throw Starlark.errorf(
"source_jars, sources, exports and exported_plugins cannot be simultaneously empty");
}
@@ -268,7 +266,7 @@
.addAll(
JavaCommon.computePerPackageJavacOpts(
skylarkRuleContext.getRuleContext(), toolchainProvider))
- .addAll(tokenize(location, javacOpts))
+ .addAll(tokenize(javacOpts))
.build());
streamProviders(deps, JavaCompilationArgsProvider.class).forEach(helper::addDep);
@@ -335,13 +333,13 @@
.build();
}
- private static List<String> tokenize(Location location, List<String> input) throws EvalException {
+ private static List<String> tokenize(List<String> input) throws EvalException {
List<String> output = new ArrayList<>();
for (String token : input) {
try {
ShellUtils.tokenize(output, token);
} catch (ShellUtils.TokenizationException e) {
- throw new EvalException(location, e.getMessage());
+ throw Starlark.errorf("%s", e.getMessage());
}
}
return output;
@@ -351,11 +349,10 @@
SkylarkActionFactory actions,
Artifact inputJar,
@Nullable Label targetLabel,
- JavaToolchainProvider javaToolchain,
- Location location)
+ JavaToolchainProvider javaToolchain)
throws EvalException {
String ijarBasename = FileSystemUtils.removeExtension(inputJar.getFilename()) + "-ijar.jar";
- Artifact interfaceJar = actions.declareFile(ijarBasename, inputJar, location);
+ Artifact interfaceJar = actions.declareFile(ijarBasename, inputJar);
FilesToRunProvider ijarTarget = javaToolchain.getIjar();
CustomCommandLine.Builder commandLine =
CustomCommandLine.builder().addExecPath(inputJar).addExecPath(interfaceJar);
@@ -371,7 +368,7 @@
.addCommandLine(commandLine.build())
.useDefaultShellEnvironment()
.setMnemonic("JavaIjar");
- actions.registerAction(location, actionBuilder.build(actions.getActionConstructionContext()));
+ actions.registerAction(actionBuilder.build(actions.getActionConstructionContext()));
return interfaceJar;
}
@@ -379,11 +376,10 @@
SkylarkActionFactory actions,
Artifact inputJar,
Label targetLabel,
- JavaToolchainProvider javaToolchain,
- Location location)
+ JavaToolchainProvider javaToolchain)
throws EvalException {
String basename = FileSystemUtils.removeExtension(inputJar.getFilename()) + "-stamped.jar";
- Artifact outputJar = actions.declareFile(basename, inputJar, location);
+ Artifact outputJar = actions.declareFile(basename, inputJar);
// ijar doubles as a stamping tool
FilesToRunProvider ijarTarget = (javaToolchain).getIjar();
CustomCommandLine.Builder commandLine =
@@ -401,7 +397,7 @@
.addCommandLine(commandLine.build())
.useDefaultShellEnvironment()
.setMnemonic("JavaIjar");
- actions.registerAction(location, actionBuilder.build(actions.getActionConstructionContext()));
+ actions.registerAction(actionBuilder.build(actions.getActionConstructionContext()));
return outputJar;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
index bc8e19b..c43e62f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaSkylarkCommon.java
@@ -21,7 +21,6 @@
import com.google.devtools.build.lib.analysis.skylark.SkylarkActionFactory;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.Provider;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCommonApi;
@@ -74,7 +73,6 @@
Sequence<?> sourcepathEntries, // <Artifact> expected
Sequence<?> resources, // <Artifact> expected
Boolean neverlink,
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException {
@@ -103,7 +101,6 @@
resources.getContents(Artifact.class, "resources"),
neverlink,
javaSemantics,
- location,
thread);
}
@@ -112,16 +109,11 @@
SkylarkActionFactory actions,
Artifact jar,
Object targetLabel,
- JavaToolchainProvider javaToolchain,
- Location location)
+ JavaToolchainProvider javaToolchain)
throws EvalException {
return JavaInfoBuildHelper.getInstance()
.buildIjar(
- actions,
- jar,
- targetLabel != Starlark.NONE ? (Label) targetLabel : null,
- javaToolchain,
- location);
+ actions, jar, targetLabel != Starlark.NONE ? (Label) targetLabel : null, javaToolchain);
}
@Override
@@ -129,11 +121,9 @@
SkylarkActionFactory actions,
Artifact jar,
Label targetLabel,
- JavaToolchainProvider javaToolchain,
- Location location)
+ JavaToolchainProvider javaToolchain)
throws EvalException {
- return JavaInfoBuildHelper.getInstance()
- .stampJar(actions, jar, targetLabel, javaToolchain, location);
+ return JavaInfoBuildHelper.getInstance().stampJar(actions, jar, targetLabel, javaToolchain);
}
@Override
@@ -143,8 +133,7 @@
Sequence<?> sourceFiles, // <Artifact> expected.
Sequence<?> sourceJars, // <Artifact> expected.
JavaToolchainProvider javaToolchain,
- JavaRuntimeInfo hostJavabase,
- Location location)
+ JavaRuntimeInfo hostJavabase)
throws EvalException {
return JavaInfoBuildHelper.getInstance()
.packSourceFiles(
@@ -154,15 +143,14 @@
sourceFiles.getContents(Artifact.class, "sources"),
sourceJars.getContents(Artifact.class, "source_jars"),
javaToolchain,
- hostJavabase,
- location);
+ hostJavabase);
}
@Override
// TODO(b/78512644): migrate callers to passing explicit javacopts or using custom toolchains, and
// delete
- public ImmutableList<String> getDefaultJavacOpts(
- JavaToolchainProvider javaToolchain, Location location) throws EvalException {
+ public ImmutableList<String> getDefaultJavacOpts(JavaToolchainProvider javaToolchain)
+ throws EvalException {
// We don't have a rule context if the default_javac_opts.java_toolchain parameter is set
return ((JavaToolchainProvider) javaToolchain).getJavacOptions(/* ruleContext= */ null);
}
@@ -242,8 +230,8 @@
}
@Override
- public Label getJavaToolchainLabel(
- JavaToolchainSkylarkApiProviderApi toolchain, Location location) throws EvalException {
+ public Label getJavaToolchainLabel(JavaToolchainSkylarkApiProviderApi toolchain)
+ throws EvalException {
// No implementation in Bazel. This method not callable in Starlark except through
// (discouraged) use of --experimental_google_legacy_api.
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java b/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
index 90a9f68..eb20b2b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/MessageBundleInfo.java
@@ -30,6 +30,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
import java.util.List;
import javax.annotation.Nullable;
@@ -59,11 +60,11 @@
@Param(name = "messages", positional = false, named = true, type = Sequence.class),
},
selfCall = true,
- useLocation = true)
- public MessageBundleInfo messageBundleInfo(Sequence<?> messages, Location loc)
+ useStarlarkThread = true)
+ public MessageBundleInfo messageBundleInfo(Sequence<?> messages, StarlarkThread thread)
throws EvalException {
List<Artifact> messagesList = Sequence.castList(messages, Artifact.class, "messages");
- return new MessageBundleInfo(ImmutableList.copyOf(messagesList), loc);
+ return new MessageBundleInfo(ImmutableList.copyOf(messagesList), thread.getCallerLocation());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyInfo.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyInfo.java
index eb5ef40..b2781c4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyInfo.java
@@ -29,6 +29,7 @@
import com.google.devtools.build.lib.syntax.EvalUtils;
import com.google.devtools.build.lib.syntax.SkylarkType;
import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -190,7 +191,7 @@
Object importsUncast,
boolean hasPy2OnlySources,
boolean hasPy3OnlySources,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
Depset imports =
importsUncast.equals(Starlark.UNBOUND)
@@ -198,26 +199,21 @@
: (Depset) importsUncast;
if (!depsetHasTypeAndCompatibleOrder(transitiveSources, Artifact.TYPE, Order.COMPILE_ORDER)) {
- throw new EvalException(
- loc,
- String.format(
- "'transitive_sources' field should be a postorder-compatible depset of Files (got "
- + "a '%s')",
- describeType(transitiveSources)));
+ throw Starlark.errorf(
+ "'transitive_sources' field should be a postorder-compatible depset of Files (got a"
+ + " '%s')",
+ describeType(transitiveSources));
}
if (!depsetHasTypeAndCompatibleOrder(imports, SkylarkType.STRING, Order.STABLE_ORDER)) {
- throw new EvalException(
- loc,
- String.format(
- "'imports' field should be a depset of strings (got a '%s')",
- describeType(imports)));
+ throw Starlark.errorf(
+ "'imports' field should be a depset of strings (got a '%s')", describeType(imports));
}
// Validate depset parameters
transitiveSources.getSetFromParam(Artifact.class, "transitive_sources");
imports.getSetFromParam(String.class, "imports");
return new PyInfo(
- loc,
+ thread.getCallerLocation(),
transitiveSources,
usesSharedLibraries,
imports,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuntimeInfo.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuntimeInfo.java
index 3ed639c..e0fb6ce 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuntimeInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuntimeInfo.java
@@ -28,6 +28,8 @@
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.Depset.TypeException;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.Starlark;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.Objects;
import javax.annotation.Nullable;
@@ -191,7 +193,7 @@
Object interpreterUncast,
Object filesUncast,
String pythonVersion,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
String interpreterPath =
interpreterPathUncast == NONE ? null : (String) interpreterPathUncast;
@@ -204,22 +206,22 @@
}
if ((interpreter == null) == (interpreterPath == null)) {
- throw new EvalException(
- loc,
+ throw Starlark.errorf(
"exactly one of the 'interpreter' or 'interpreter_path' arguments must be specified");
}
boolean isInBuildRuntime = interpreter != null;
if (!isInBuildRuntime && filesDepset != null) {
- throw new EvalException(loc, "cannot specify 'files' if 'interpreter_path' is given");
+ throw Starlark.errorf("cannot specify 'files' if 'interpreter_path' is given");
}
PythonVersion parsedPythonVersion;
try {
parsedPythonVersion = PythonVersion.parseTargetValue(pythonVersion);
} catch (IllegalArgumentException ex) {
- throw new EvalException(loc, "illegal value for 'python_version'", ex);
+ throw Starlark.errorf("illegal value for 'python_version': %s", ex.getMessage());
}
+ Location loc = thread.getCallerLocation();
if (isInBuildRuntime) {
if (filesDepset == null) {
filesDepset = Depset.of(Artifact.TYPE, NestedSetBuilder.emptySet(Order.STABLE_ORDER));
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
index 07ff3a0..54cccdd 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
@@ -23,7 +23,6 @@
import com.google.devtools.build.lib.analysis.SkylarkProviderValidationUtil;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleConfiguredTargetUtil;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.BazelStarlarkContext;
@@ -135,26 +134,25 @@
} else {
// Either an old-style struct or a single declared provider (not in a list)
Info info = (Info) aspectSkylarkObject;
- Location loc = info.getCreationLoc();
if (info.getProvider().getKey().equals(StructProvider.STRUCT.getKey())) {
// Old-style struct, that may contain declared providers.
StructImpl struct = (StructImpl) aspectSkylarkObject;
for (String field : struct.getFieldNames()) {
if (field.equals("output_groups")) {
- addOutputGroups(struct.getValue(field), loc, builder);
+ addOutputGroups(struct.getValue(field), builder);
} else if (field.equals("providers")) {
Object value = struct.getValue(field);
Iterable<?> providers =
SkylarkType.cast(
value,
Iterable.class,
- loc,
+ null,
"The value for \"providers\" should be a list of declared providers, "
+ "got %s instead",
EvalUtils.getDataTypeName(value, false));
addDeclaredProviders(builder, providers);
} else {
- builder.addSkylarkTransitiveInfo(field, struct.getValue(field), loc);
+ builder.addSkylarkTransitiveInfo(field, struct.getValue(field));
}
}
} else {
@@ -171,12 +169,11 @@
ConfiguredAspect.Builder builder, Iterable<?> aspectSkylarkObject) throws EvalException {
int i = 0;
for (Object o : aspectSkylarkObject) {
- Location loc = skylarkAspect.getImplementation().getLocation();
Info declaredProvider =
SkylarkType.cast(
o,
Info.class,
- loc,
+ null,
"A return value of an aspect implementation function should be "
+ "a sequence of declared providers, instead got a %s at index %d",
o.getClass(),
@@ -186,7 +183,7 @@
}
}
- private static void addOutputGroups(Object value, Location loc, ConfiguredAspect.Builder builder)
+ private static void addOutputGroups(Object value, ConfiguredAspect.Builder builder)
throws EvalException {
Map<String, StarlarkValue> outputGroups =
SkylarkType.castMap(value, String.class, StarlarkValue.class, "output_groups");
@@ -196,7 +193,7 @@
builder.addOutputGroup(
outputGroup,
- SkylarkRuleConfiguredTargetUtil.convertToOutputGroupValue(loc, outputGroup, objects));
+ SkylarkRuleConfiguredTargetUtil.convertToOutputGroupValue(outputGroup, objects));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java
index 016e969..2e74568 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/CommandLineArgsApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.ParamType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -24,6 +23,7 @@
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
/** Command line args module. */
@@ -193,7 +193,7 @@
+ "list's length must equal the number of items. Use <code>map_each</code> "
+ "of <code>add_all</code> or <code>add_joined</code> instead.")
},
- useLocation = true)
+ useStarlarkThread = true)
CommandLineArgsApi addArgument(
Object argNameOrValue,
Object value,
@@ -201,7 +201,7 @@
Object beforeEach,
Object joinWith,
Object mapFn,
- Location loc)
+ StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -349,7 +349,7 @@
+ "items are appended (as happens if <code>values</code> is empty or all of "
+ "its items are filtered)."),
},
- useLocation = true)
+ useStarlarkThread = true)
CommandLineArgsApi addAll(
Object argNameOrValue,
Object values,
@@ -360,7 +360,7 @@
Boolean uniquify,
Boolean expandDirectories,
Object terminateWith,
- Location loc)
+ StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -465,7 +465,7 @@
defaultValue = "True",
doc = "Same as for <a href='#add_all.expand_directories'><code>add_all</code></a>.")
},
- useLocation = true)
+ useStarlarkThread = true)
CommandLineArgsApi addJoined(
Object argNameOrValue,
Object values,
@@ -476,7 +476,7 @@
Boolean omitIfEmpty,
Boolean uniquify,
Boolean expandDirectories,
- Location loc)
+ StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/DefaultInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/DefaultInfoApi.java
index 2450bfa..393ffc1 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/DefaultInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/DefaultInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -24,6 +23,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
/** A provider that gives general information about a target's direct and transitive files. */
@SkylarkModule(
@@ -149,8 +149,8 @@
+ " should be executed to run the target. By default it is the predeclared"
+ " output <code>ctx.outputs.executable</code>.")
},
- useLocation = true,
- selfCall = true)
+ selfCall = true,
+ useStarlarkThread = true)
@SkylarkConstructor(objectType = DefaultInfoApi.class, receiverNameForDoc = "DefaultInfo")
DefaultInfoApi constructor(
// TODO(cparsons): Use stricter types when Runfiles.NONE is passed as null.
@@ -159,7 +159,7 @@
Object dataRunfiles,
Object defaultRunfiles,
Object executable,
- Location loc)
+ StarlarkThread thread)
throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java
index 43e4952..26b6f60 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/OutputGroupInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -55,11 +54,10 @@
type = Dict.class,
defaultValue = "{}",
doc = "Dictionary of arguments."),
- useLocation = true,
selfCall = true)
@SkylarkConstructor(
objectType = OutputGroupInfoApi.class,
receiverNameForDoc = "OutputGroupInfo")
- OutputGroupInfoApi constructor(Dict<?, ?> kwargs, Location loc) throws EvalException;
+ OutputGroupInfoApi constructor(Dict<?, ?> kwargs) throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
index acea0a9..ec0bf1f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.ParamType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -72,9 +71,8 @@
positional = false,
named = true,
defaultValue = "None")
- },
- useLocation = true)
- FileApi declareFile(String filename, Object sibling, Location loc) throws EvalException;
+ })
+ FileApi declareFile(String filename, Object sibling) throws EvalException;
@SkylarkCallable(
name = "declare_directory",
@@ -129,9 +127,8 @@
positional = false,
named = true,
defaultValue = "None")
- },
- useLocation = true)
- FileApi declareSymlink(String filename, Object sibling, Location location) throws EvalException;
+ })
+ FileApi declareSymlink(String filename, Object sibling) throws EvalException;
@SkylarkCallable(
name = "do_nothing",
@@ -156,9 +153,8 @@
positional = false,
defaultValue = "[]",
doc = "List of the input files of the action."),
- },
- useLocation = true)
- void doNothing(String mnemonic, Object inputs, Location location) throws EvalException;
+ })
+ void doNothing(String mnemonic, Object inputs) throws EvalException;
@SkylarkCallable(
name = "symlink",
@@ -172,9 +168,8 @@
parameters = {
@Param(name = "output", type = FileApi.class, doc = "The output path.", named = true),
@Param(name = "target", type = String.class, doc = "The target.", named = true),
- },
- useLocation = true)
- void symlink(FileApi output, String targetPath, Location location) throws EvalException;
+ })
+ void symlink(FileApi output, String targetPath) throws EvalException;
@SkylarkCallable(
name = "write",
@@ -203,10 +198,8 @@
defaultValue = "False",
doc = "Whether the output file should be executable.",
named = true)
- },
- useLocation = true)
- void write(FileApi output, Object content, Boolean isExecutable, Location location)
- throws EvalException;
+ })
+ void write(FileApi output, Object content, Boolean isExecutable) throws EvalException;
@SkylarkCallable(
name = "run",
@@ -344,8 +337,7 @@
doc =
"(Experimental) sets the input runfiles metadata; "
+ "they are typically generated by resolve_command.")
- },
- useLocation = true)
+ })
void run(
Sequence<?> outputs,
Object inputs,
@@ -358,8 +350,7 @@
Boolean useDefaultShellEnv,
Object envUnchecked,
Object executionRequirementsUnchecked,
- Object inputManifestsUnchecked,
- Location location)
+ Object inputManifestsUnchecked)
throws EvalException;
@SkylarkCallable(
@@ -515,8 +506,7 @@
"(Experimental) sets the input runfiles metadata; "
+ "they are typically generated by resolve_command.")
},
- useStarlarkThread = true,
- useLocation = true)
+ useStarlarkThread = true)
void runShell(
Sequence<?> outputs,
Object inputs,
@@ -529,7 +519,6 @@
Object envUnchecked,
Object executionRequirementsUnchecked,
Object inputManifestsUnchecked,
- Location location,
StarlarkThread thread)
throws EvalException;
@@ -572,14 +561,9 @@
named = true,
positional = false,
doc = "Whether the output file should be executable.")
- },
- useLocation = true)
+ })
void expandTemplate(
- FileApi template,
- FileApi output,
- Dict<?, ?> substitutionsUnchecked,
- Boolean executable,
- Location location)
+ FileApi template, FileApi output, Dict<?, ?> substitutionsUnchecked, Boolean executable)
throws EvalException;
@SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
index 9719968..24f39a6 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.ParamType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -177,14 +176,12 @@
named = true,
positional = false)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor intAttribute(
Integer defaultValue,
String doc,
Boolean mandatory,
Sequence<?> values,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -222,14 +219,12 @@
named = true,
positional = false)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor stringAttribute(
String defaultValue,
String doc,
Boolean mandatory,
Sequence<?> values,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -359,7 +354,6 @@
positional = false,
doc = ASPECTS_ARG_DOC),
},
- useLocation = true,
useStarlarkThread = true)
Descriptor labelAttribute(
Object defaultValue,
@@ -373,7 +367,6 @@
Boolean singleFile,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -415,7 +408,6 @@
named = true,
positional = false)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor stringListAttribute(
Boolean mandatory,
@@ -423,7 +415,6 @@
Boolean allowEmpty,
Sequence<?> defaultValue,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -465,7 +456,6 @@
named = true,
positional = false)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor intListAttribute(
Boolean mandatory,
@@ -473,7 +463,6 @@
Boolean allowEmpty,
Sequence<?> defaultValue,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -573,7 +562,6 @@
positional = false,
doc = ASPECTS_ARG_DOC),
},
- useLocation = true,
useStarlarkThread = true)
Descriptor labelListAttribute(
Boolean allowEmpty,
@@ -587,7 +575,6 @@
Boolean nonEmpty,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -689,7 +676,6 @@
positional = false,
doc = ASPECTS_ARG_DOC)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor labelKeyedStringDictAttribute(
Boolean allowEmpty,
@@ -703,7 +689,6 @@
Boolean nonEmpty,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -733,10 +718,9 @@
positional = false,
doc = MANDATORY_DOC)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor boolAttribute(
- Boolean defaultValue, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
+ Boolean defaultValue, String doc, Boolean mandatory, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -771,10 +755,9 @@
positional = false,
doc = MANDATORY_DOC)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor outputAttribute(
- Object defaultValue, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
+ Object defaultValue, String doc, Boolean mandatory, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -822,7 +805,6 @@
positional = false,
doc = NON_EMPTY_DOC)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor outputListAttribute(
Boolean allowEmpty,
@@ -830,7 +812,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -875,7 +856,6 @@
positional = false,
doc = NON_EMPTY_DOC)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor stringDictAttribute(
Boolean allowEmpty,
@@ -883,7 +863,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -928,7 +907,6 @@
positional = false,
doc = NON_EMPTY_DOC)
},
- useLocation = true,
useStarlarkThread = true)
Descriptor stringListDictAttribute(
Boolean allowEmpty,
@@ -936,7 +914,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -969,10 +946,9 @@
doc = MANDATORY_DOC)
},
disableWithFlag = FlagIdentifier.INCOMPATIBLE_NO_ATTR_LICENSE,
- useLocation = true,
useStarlarkThread = true)
Descriptor licenseAttribute(
- Object defaultValue, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
+ Object defaultValue, String doc, Boolean mandatory, StarlarkThread thread)
throws EvalException;
/** An attribute descriptor. */
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkBuildApiGlobals.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkBuildApiGlobals.java
index 1eccbd2..100211e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkBuildApiGlobals.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkBuildApiGlobals.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
@@ -55,8 +54,7 @@
named = true,
doc = "The name of the value to obtain from the configuration fragment."),
},
- useLocation = true,
useStarlarkThread = true)
- LateBoundDefaultApi configurationField(
- String fragment, String name, Location loc, StarlarkThread thread) throws EvalException;
+ LateBoundDefaultApi configurationField(String fragment, String name, StarlarkThread thread)
+ throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
index 960ae79..d68e0b3 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkNativeModuleApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -83,14 +82,12 @@
+ " result must be non-empty (after the matches of the `exclude` patterns are"
+ " excluded).")
},
- useLocation = true,
useStarlarkThread = true)
Sequence<?> glob(
Sequence<?> include,
Sequence<?> exclude,
Integer excludeDirectories,
Object allowEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException, InterruptedException;
@@ -127,9 +124,8 @@
legacyNamed = true,
doc = "The name of the target.")
},
- useLocation = true,
useStarlarkThread = true)
- Object existingRule(String name, Location loc, StarlarkThread thread)
+ Object existingRule(String name, StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -140,9 +136,8 @@
+ " would be returned by <code>existing_rule(name)</code>.<p><i>Note: If possible,"
+ " avoid using this function. It makes BUILD files brittle and order-dependent, and"
+ " it may be expensive especially if called within a loop.</i>",
- useLocation = true,
useStarlarkThread = true)
- Dict<String, Dict<String, Object>> existingRules(Location loc, StarlarkThread thread)
+ Dict<String, Dict<String, Object>> existingRules(StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -174,10 +169,9 @@
positional = false,
doc = "Other package groups that are included in this one.")
},
- useLocation = true,
useStarlarkThread = true)
NoneType packageGroup(
- String name, Sequence<?> packages, Sequence<?> includes, Location loc, StarlarkThread thread)
+ String name, Sequence<?> packages, Sequence<?> includes, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -212,10 +206,8 @@
defaultValue = "None",
doc = "Licenses to be specified.")
},
- useLocation = true,
useStarlarkThread = true)
- NoneType exportsFiles(
- Sequence<?> srcs, Object visibility, Object licenses, Location loc, StarlarkThread thread)
+ NoneType exportsFiles(Sequence<?> srcs, Object visibility, Object licenses, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -227,10 +219,8 @@
+ "If the BUILD file calls a function defined in a .bzl file, "
+ "<code>package_name()</code> will match the caller BUILD file package. "
+ "This function is equivalent to the deprecated variable <code>PACKAGE_NAME</code>.",
- parameters = {},
- useLocation = true,
useStarlarkThread = true)
- String packageName(Location loc, StarlarkThread thread) throws EvalException;
+ String packageName(StarlarkThread thread) throws EvalException;
@SkylarkCallable(
name = "repository_name",
@@ -241,8 +231,6 @@
+ "<code>@local</code>. In packages in the main repository, it will be set to "
+ "<code>@</code>. This function is equivalent to the deprecated variable "
+ "<code>REPOSITORY_NAME</code>.",
- parameters = {},
- useLocation = true,
useStarlarkThread = true)
- String repositoryName(Location location, StarlarkThread thread) throws EvalException;
+ String repositoryName(StarlarkThread thread) throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
index 8a134cc..eb292c5 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
@@ -16,7 +16,6 @@
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.TransitiveInfoCollectionApi;
@@ -422,9 +421,8 @@
},
defaultValue = "unbound",
doc = "")
- },
- useLocation = true)
- FileApi newFile(Object var1, Object var2, Object var3, Location loc) throws EvalException;
+ })
+ FileApi newFile(Object var1, Object var2, Object var3) throws EvalException;
@SkylarkCallable(
name = "experimental_new_directory",
@@ -669,7 +667,6 @@
+ "they are typically generated by resolve_command.")
},
allowReturnNones = true,
- useLocation = true,
useStarlarkThread = true)
NoneType action(
Sequence<?> outputs,
@@ -684,7 +681,6 @@
Object envUnchecked,
Object executionRequirementsUnchecked,
Object inputManifestsUnchecked,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -717,9 +713,8 @@
doc = "List of targets for additional lookup information."),
},
allowReturnNones = true,
- useLocation = true,
useStarlarkThread = true)
- String expandLocation(String input, Sequence<?> targets, Location loc, StarlarkThread thread)
+ String expandLocation(String input, Sequence<?> targets, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -742,10 +737,8 @@
doc = "Whether the output file should be executable (default is False).")
},
allowReturnNones = true,
- useLocation = true,
useStarlarkThread = true)
- NoneType fileAction(
- FileApi output, String content, Boolean executable, Location loc, StarlarkThread thread)
+ NoneType fileAction(FileApi output, String content, Boolean executable, StarlarkThread thread)
throws EvalException;
@SkylarkCallable(
@@ -775,10 +768,8 @@
doc = "List of the input files of the action."),
},
allowReturnNones = true,
- useLocation = true,
useStarlarkThread = true)
- NoneType emptyAction(String mnemonic, Object inputs, Location loc, StarlarkThread thread)
- throws EvalException;
+ NoneType emptyAction(String mnemonic, Object inputs, StarlarkThread thread) throws EvalException;
@SkylarkCallable(
name = "template_action",
@@ -814,14 +805,12 @@
doc = "Whether the output file should be executable (default is False).")
},
allowReturnNones = true,
- useLocation = true,
useStarlarkThread = true)
NoneType templateAction(
FileApi template,
FileApi output,
Dict<?, ?> substitutionsUnchecked,
Boolean executable,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -882,16 +871,14 @@
defaultValue = "{}",
named = true,
doc = "The map of symlinks to be added to the runfiles.")
- },
- useLocation = true)
+ })
RunfilesApi runfiles(
Sequence<?> files,
Object transitiveFiles,
Boolean collectData,
Boolean collectDefault,
Dict<?, ?> symlinks,
- Dict<?, ?> rootSymlinks,
- Location loc)
+ Dict<?, ?> rootSymlinks)
throws EvalException;
@SkylarkCallable(
@@ -966,7 +953,6 @@
+ "<a href=\"$BE_ROOT/common-definitions.html#common.tags\">tags</a> "
+ "for useful keys."),
},
- useLocation = true,
useStarlarkThread = true)
Tuple<Object> resolveCommand(
String command,
@@ -976,7 +962,6 @@
Sequence<?> tools,
Dict<?, ?> labelDictUnchecked,
Dict<?, ?> executionRequirementsUnchecked,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -998,8 +983,6 @@
named = true,
positional = false,
doc = "List of tools (list of targets)."),
- },
- useLocation = false,
- useStarlarkThread = false)
+ })
Tuple<Object> resolveTools(Sequence<?> tools) throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
index c21396f..3d2d8a8 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.StarlarkConfigApi.BuildSettingApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -85,8 +84,8 @@
positional = false,
defaultValue = "None")
},
- useLocation = true)
- ProviderApi provider(String doc, Object fields, Location location) throws EvalException;
+ useStarlarkThread = true)
+ ProviderApi provider(String doc, Object fields, StarlarkThread thread) throws EvalException;
@SkylarkCallable(
name = "rule",
@@ -330,7 +329,6 @@
"If set, points to the configuration transition the rule will "
+ "apply to its own configuration before analysis.")
},
- useLocation = true,
useStarlarkThread = true)
BaseFunction rule(
StarlarkFunction implementation,
@@ -349,7 +347,6 @@
Object analysisTest,
Object buildSetting,
Object cfg,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -488,8 +485,7 @@
+ "will propagate through `alpha`, `beta`, and `charlie`. If False, then the "
+ "aspect will propagate only to `alpha`. </p><p>False by default.</p>")
},
- useStarlarkThread = true,
- useLocation = true)
+ useStarlarkThread = true)
SkylarkAspectApi aspect(
StarlarkFunction implementation,
Sequence<?> attributeAspects,
@@ -501,7 +497,6 @@
Sequence<?> toolchains,
String doc,
Boolean applyToGeneratingRules,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -533,10 +528,8 @@
+ "False, a repo-relative label is resolved relative to the file in which the "
+ "Label() call appears.")
},
- useLocation = true,
useStarlarkThread = true)
@SkylarkConstructor(objectType = Label.class)
- Label label(
- String labelString, Boolean relativeToCallerRepository, Location loc, StarlarkThread thread)
+ Label label(String labelString, Boolean relativeToCallerRepository, StarlarkThread thread)
throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java
index 2845b19..83057f7 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/TemplateVariableInfoApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -24,6 +23,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
/** Provides access to make variables from the current fragments. */
@SkylarkModule(
@@ -62,8 +62,8 @@
@Param(name = "vars", positional = true, named = true, type = Dict.class),
},
selfCall = true,
- useLocation = true)
- TemplateVariableInfoApi templateVariableInfo(Dict<?, ?> vars, Location loc)
+ useStarlarkThread = true)
+ TemplateVariableInfoApi templateVariableInfo(Dict<?, ?> vars, StarlarkThread thread)
throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
index a620a47..736507b 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/WorkspaceGlobalsApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
@@ -78,12 +77,10 @@
+ "\nManaged directories must be excluded from the source tree by listing"
+ " them (or their parent directories) in the .bazelignore file."),
},
- useLocation = true,
useStarlarkThread = true)
NoneType workspace(
String name,
Dict<?, ?> managedDirectories, // <String, Sequence<String>>
- Location loc,
StarlarkThread thread)
throws EvalException, InterruptedException;
@@ -112,10 +109,9 @@
named = true,
positional = false)
},
- useLocation = true,
useStarlarkThread = true,
enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_NINJA_ACTIONS)
- NoneType dontSymlinkDirectoriesInExecroot(Sequence<?> paths, Location loc, StarlarkThread thread)
+ NoneType dontSymlinkDirectoriesInExecroot(Sequence<?> paths, StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -128,10 +124,8 @@
type = Sequence.class,
generic1 = String.class,
doc = "The labels of the platforms to register."),
- useLocation = true,
useStarlarkThread = true)
- NoneType registerExecutionPlatforms(
- Sequence<?> platformLabels, Location location, StarlarkThread thread)
+ NoneType registerExecutionPlatforms(Sequence<?> platformLabels, StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -146,9 +140,8 @@
type = Sequence.class,
generic1 = String.class,
doc = "The labels of the toolchains to register."),
- useLocation = true,
useStarlarkThread = true)
- NoneType registerToolchains(Sequence<?> toolchainLabels, Location location, StarlarkThread thread)
+ NoneType registerToolchains(Sequence<?> toolchainLabels, StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -175,8 +168,7 @@
defaultValue = "None",
doc = "The real label to be aliased")
},
- useLocation = true,
useStarlarkThread = true)
- NoneType bind(String name, Object actual, Location loc, StarlarkThread thread)
+ NoneType bind(String name, Object actual, StarlarkThread thread)
throws EvalException, InterruptedException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
index 19eba87..be67ec0 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidDataProcessingApi.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.skylarkbuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.FileProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
@@ -126,8 +125,6 @@
named = true,
doc = "The Android application package to stamp the manifest with."),
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Creates an AndroidResourcesInfoApi from this target's resource dependencies, ignoring"
+ " local resources. Only processing of deps will be done. This method is deprecated"
@@ -140,9 +137,7 @@
Sequence<?> deps, // <AndroidResourcesInfoT>
Sequence<?> assets, // <AndroidAssetsInfoT>
boolean neverlink,
- String customPackage,
- Location location,
- StarlarkThread thread)
+ String customPackage)
throws InterruptedException, EvalException;
@SkylarkCallable(
@@ -185,17 +180,10 @@
+ " eventually merged into targets that depend on it. Otherwise, it won't be"
+ " inherited."),
},
- useLocation = true,
- useStarlarkThread = true,
doc = "Stamps a manifest with package information.",
documented = false)
AndroidManifestInfoT stampAndroidManifest(
- AndroidDataContextT ctx,
- Object manifest,
- Object customPackage,
- boolean exported,
- Location location,
- StarlarkThread thread)
+ AndroidDataContextT ctx, Object manifest, Object customPackage, boolean exported)
throws InterruptedException, EvalException;
@SkylarkCallable(
@@ -248,8 +236,6 @@
"Defaults to False. If passed as True, these assets will not be inherited by"
+ " targets that depend on this one.")
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Merges this target's assets together with assets inherited from dependencies. Note that,"
+ " by default, actions for validating the merge are created but may not be called."
@@ -261,9 +247,7 @@
Object assets,
Object assetsDir,
Sequence<?> deps, // <AndroidAssetsInfoT>
- boolean neverlink,
- Location location,
- StarlarkThread thread)
+ boolean neverlink)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -320,8 +304,6 @@
"Defaults to False. If True, processes data binding expressions in layout"
+ " resources."),
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Merges this target's resources together with resources inherited from dependencies."
+ " Returns a dict of provider type to actual info, with elements for"
@@ -339,9 +321,7 @@
Sequence<?> resources, // <TransitiveInfoCollectionT>
Sequence<?> deps, // <AndroidResourcesInfoT>
boolean neverlink,
- boolean enableDataBinding,
- Location location,
- StarlarkThread thread)
+ boolean enableDataBinding)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -398,8 +378,6 @@
"Defaults to False. If True, processes data binding expressions in layout"
+ " resources."),
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Merges this target's resources together with resources inherited from dependencies."
+ " Returns a dict of provider type to actual info, with elements for"
@@ -416,9 +394,7 @@
Sequence<?> resources, // <TransitiveInfoCollectionT>
Sequence<?> deps, // <AndroidResourcesInfoT>
boolean neverlink,
- boolean enableDataBinding,
- Location location,
- StarlarkThread thread)
+ boolean enableDataBinding)
throws EvalException, InterruptedException;
@SkylarkCallable(
@@ -639,8 +615,6 @@
named = true,
doc = "A list of file extensions to leave uncompressed in the resource apk.")
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Processes resources, assets, and manifests for android_local_test and returns a dict"
+ " from provider type to the appropriate provider.",
@@ -655,9 +629,7 @@
String aaptVersionString,
Dict<?, ?> manifestValues, // <String, String>
Sequence<?> deps, // <TransitiveInfoCollectionT>
- Sequence<?> noCompressExtensions, // <String>
- Location location,
- StarlarkThread thread)
+ Sequence<?> noCompressExtensions) // <String>
throws InterruptedException, EvalException;
@SkylarkCallable(
@@ -711,8 +683,6 @@
"A list of file extension to leave uncompressed in apk. Templates must be"
+ " expanded before passing this value in."),
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Returns a wrapper object containing various settings shared across multiple methods for"
+ " processing binary data.",
@@ -722,9 +692,7 @@
Object shrinkResources,
Sequence<?> resourceConfigurationFilters, // <String>
Sequence<?> densities, // <String>
- Sequence<?> noCompressExtensions, // <String>
- Location location,
- StarlarkThread thread)
+ Sequence<?> noCompressExtensions) // <String>
throws EvalException;
@SkylarkCallable(
@@ -843,8 +811,6 @@
"Defaults to False. If True, processes data binding expressions in layout"
+ " resources."),
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Processes resources, assets, and manifests for android_binary and returns the"
+ " appropriate providers.",
@@ -861,9 +827,7 @@
String manifestMerger,
Object maybeSettings,
boolean crunchPng,
- boolean dataBindingEnabled,
- Location location,
- StarlarkThread thread)
+ boolean dataBindingEnabled)
throws InterruptedException, EvalException;
@SkylarkCallable(
@@ -934,8 +898,6 @@
"Additional proguard specs that should be added for top-level targets. This value"
+ " is controlled by Java configuration.")
},
- useLocation = true,
- useStarlarkThread = true,
doc =
"Possibly shrinks the data APK by removing resources that were marked as unused during"
+ " proguarding.",
@@ -948,9 +910,7 @@
Object maybeSettings,
Sequence<?> deps, // <TransitiveInfoCollectionT>
Sequence<?> localProguardSpecs, // <TransitiveInfoCollectionT>
- Sequence<?> extraProguardSpecs, // <TransitiveInfoCollectionT>
- Location location,
- StarlarkThread thread)
+ Sequence<?> extraProguardSpecs) // <TransitiveInfoCollectionT>
throws EvalException, InterruptedException;
@SkylarkCallable(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java
index 152dcfa..1eef012 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/ApkInfoApi.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.skylarkbuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
@@ -85,8 +84,7 @@
// This is left undocumented as it throws a "not-implemented in Skylark" error when invoked.
documented = false,
extraKeywords = @Param(name = "kwargs"),
- useLocation = true,
selfCall = true)
- ApkInfoApi<?> createInfo(Dict<String, Object> kwargs, Location loc) throws EvalException;
+ ApkInfoApi<?> createInfo(Dict<String, Object> kwargs) throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java
index 111d662..5fc9b28 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config/ConfigGlobalLibraryApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.config;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
@@ -97,14 +96,12 @@
"List of build settings that can be written by this transition. This must be "
+ "a superset of the key set of the dictionary returned by this transition."),
},
- useLocation = true,
useStarlarkThread = true)
@SkylarkConstructor(objectType = ConfigurationTransitionApi.class)
ConfigurationTransitionApi transition(
BaseFunction implementation,
Sequence<?> inputs, // <String> expected
Sequence<?> outputs, // <String> expected
- Location location,
StarlarkThread thread)
throws EvalException;
@@ -131,9 +128,9 @@
+ "are unchanged. Use this to declare specific configuration settings that "
+ "an analysis test requires to be set in order to pass."),
},
- useLocation = true)
+ useStarlarkThread = true)
ConfigurationTransitionApi analysisTestTransition(
Dict<?, ?> changedSettings, // <String, String> expected
- Location location)
+ StarlarkThread thread)
throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core/StructApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core/StructApi.java
index 1bc6aac..d0e6ae8 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core/StructApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/core/StructApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.core;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkConstructor;
@@ -22,6 +21,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
/** Interface for the "struct" object in the build API. */
@@ -62,9 +62,8 @@
+ "# key: 2\n"
+ "# value: 1\n"
+ "# }\n"
- + "</pre>",
- useLocation = true)
- String toProto(Location loc) throws EvalException;
+ + "</pre>")
+ String toProto() throws EvalException;
@SkylarkCallable(
name = "to_json",
@@ -83,9 +82,8 @@
+ "struct(key=[struct(inner_key=1), struct(inner_key=2)]).to_json()\n"
+ "# {\"key\":[{\"inner_key\":1},{\"inner_key\":2}]}\n\n"
+ "struct(key=struct(inner_key=struct(inner_inner_key='text'))).to_json()\n"
- + "# {\"key\":{\"inner_key\":{\"inner_inner_key\":\"text\"}}}\n</pre>",
- useLocation = true)
- String toJson(Location loc) throws EvalException;
+ + "# {\"key\":{\"inner_key\":{\"inner_inner_key\":\"text\"}}}\n</pre>")
+ String toJson() throws EvalException;
/** Callable Provider for new struct objects. */
@SkylarkModule(name = "Provider", documented = false, doc = "")
@@ -104,9 +102,9 @@
type = Dict.class,
defaultValue = "{}",
doc = "Dictionary of arguments."),
- useLocation = true,
+ useStarlarkThread = true,
selfCall = true)
@SkylarkConstructor(objectType = StructApi.class, receiverNameForDoc = "struct")
- StructApi createStruct(Dict<?, ?> kwargs, Location loc) throws EvalException;
+ StructApi createStruct(Dict<String, Object> kwargs, StarlarkThread thread) throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
index b213f58..30f697e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/BazelCcModuleApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
@@ -70,7 +69,6 @@
"Should be used for C++ compilation. Returns tuple of "
+ "(<code>CompilationContext</code>, <code>CcCompilationOutputs</code>).",
useStarlarkThread = true,
- useLocation = true,
parameters = {
@Param(
name = "actions",
@@ -237,7 +235,6 @@
boolean disallowPicOutputs,
boolean disallowNopicOutputs,
Sequence<?> additionalInputs, // <FileT> expected
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException;
@@ -245,7 +242,6 @@
name = "link",
doc = "Should be used for C++ transitive linking.",
useStarlarkThread = true,
- useLocation = true,
parameters = {
@Param(
name = "actions",
@@ -349,14 +345,12 @@
boolean linkDepsStatically,
Sequence<?> additionalInputs, // <FileT> expected
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException;
@SkylarkCallable(
name = "create_compilation_outputs",
doc = "Create compilation outputs object.",
- useLocation = true,
parameters = {
@Param(
name = "objects",
@@ -376,7 +370,7 @@
allowedTypes = {@ParamType(type = Depset.class), @ParamType(type = NoneType.class)}),
})
CompilationOutputsT createCompilationOutputsFromSkylark(
- Object objectsObject, Object picObjectsObject, Location location) throws EvalException;
+ Object objectsObject, Object picObjectsObject) throws EvalException;
@SkylarkCallable(
name = "merge_compilation_outputs",
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
index 1248dd4..3a80faf 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcCompilationOutputsApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
@@ -38,13 +37,11 @@
name = "object_files",
doc = "Do not use. Use eiher 'objects' or 'pic_objects'.",
useStarlarkThread = true,
- useLocation = true,
parameters = {
@Param(name = "use_pic", doc = "use_pic", positional = false, named = true),
})
@Deprecated
- Sequence<FileT> getSkylarkObjectFiles(boolean usePic, Location location, StarlarkThread thread)
- throws EvalException;
+ Sequence<FileT> getSkylarkObjectFiles(boolean usePic, StarlarkThread thread) throws EvalException;
@SkylarkCallable(name = "objects", documented = false, structField = true)
Sequence<FileT> getSkylarkObjects() throws EvalException;
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcInfoApi.java
index 7e5a2c3..c24fc1c 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -25,7 +24,6 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.NoneType;
-import com.google.devtools.build.lib.syntax.StarlarkThread;
/** Wrapper for every C++ compilation and linking provider. */
@SkylarkModule(
@@ -63,8 +61,6 @@
@SkylarkCallable(
name = NAME,
doc = "The <code>CcInfo</code> constructor.",
- useLocation = true,
- useStarlarkThread = true,
parameters = {
@Param(
name = "compilation_context",
@@ -91,8 +87,6 @@
},
selfCall = true)
@SkylarkConstructor(objectType = CcInfoApi.class, receiverNameForDoc = NAME)
- CcInfoApi createInfo(
- Object ccCompilationContext, Object ccLinkingInfo, Location location, StarlarkThread thread)
- throws EvalException;
+ CcInfoApi createInfo(Object ccCompilationContext, Object ccLinkingInfo) throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
index abab54f..475d488 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp/CcModuleApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.cpp;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
@@ -507,7 +506,6 @@
@SkylarkCallable(
name = "create_library_to_link",
doc = "Creates <code>LibraryToLink</code>",
- useLocation = true,
useStarlarkThread = true,
parameters = {
@Param(
@@ -598,14 +596,12 @@
boolean alwayslink,
String dynamicLibraryPath,
String interfaceLibraryPath,
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
name = "create_linker_input",
doc = "Creates a <code>LinkingContext</code>.",
- useLocation = true,
useStarlarkThread = true,
enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_CC_SHARED_LIBRARY,
parameters = {
@@ -645,14 +641,12 @@
Object librariesToLinkObject,
Object userLinkFlagsObject,
Object nonCodeInputs,
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException;
@SkylarkCallable(
name = "create_linking_context",
doc = "Creates a <code>LinkingContext</code>.",
- useLocation = true,
useStarlarkThread = true,
parameters = {
@Param(
@@ -693,7 +687,6 @@
Object librariesToLinkObject,
Object userLinkFlagsObject,
Object nonCodeInputs, // <FileT> expected
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException;
@@ -985,7 +978,6 @@
"Should be used for creating library rules that can propagate information downstream in"
+ " order to be linked later by a top level rule that does transitive linking to"
+ " create an executable or dynamic library.",
- useLocation = true,
useStarlarkThread = true,
parameters = {
@Param(
@@ -1093,7 +1085,6 @@
boolean disallowStaticLibraries,
boolean disallowDynamicLibraries,
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
index b4189e9..0e95078 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaCommonApi.java
@@ -16,7 +16,6 @@
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
@@ -214,7 +213,6 @@
type = Boolean.class,
defaultValue = "False")
},
- useLocation = true,
useStarlarkThread = true)
JavaInfoT createJavaCompileAction(
SkylarkRuleContextT skylarkRuleContext,
@@ -236,7 +234,6 @@
Sequence<?> sourcepathEntries, // <FileT> expected.
Sequence<?> resources, // <FileT> expected.
Boolean neverlink,
- Location loc,
StarlarkThread thread)
throws EvalException, InterruptedException;
@@ -278,14 +275,9 @@
type = Object.class,
allowedTypes = {@ParamType(type = JavaToolchainSkylarkApiProviderApi.class)},
doc = "A JavaToolchainInfo to used to find the ijar tool."),
- },
- useLocation = true)
+ })
FileApi runIjar(
- SkylarkActionFactoryT actions,
- FileT jar,
- Object targetLabel,
- JavaToolchainT javaToolchain,
- Location location)
+ SkylarkActionFactoryT actions, FileT jar, Object targetLabel, JavaToolchainT javaToolchain)
throws EvalException;
@SkylarkCallable(
@@ -326,14 +318,9 @@
type = Object.class,
allowedTypes = {@ParamType(type = JavaToolchainSkylarkApiProviderApi.class)},
doc = "A JavaToolchainInfo to used to find the stamp_jar tool."),
- },
- useLocation = true)
+ })
FileApi stampJar(
- SkylarkActionFactoryT actions,
- FileT jar,
- Label targetLabel,
- JavaToolchainT javaToolchain,
- Location location)
+ SkylarkActionFactoryT actions, FileT jar, Label targetLabel, JavaToolchainT javaToolchain)
throws EvalException;
@SkylarkCallable(
@@ -386,16 +373,14 @@
allowedTypes = {@ParamType(type = JavaRuntimeInfoApi.class)},
doc = "A JavaRuntimeInfo to be used for packing sources."),
},
- allowReturnNones = true,
- useLocation = true)
+ allowReturnNones = true)
FileApi packSources(
SkylarkActionFactoryT actions,
FileT outputJar,
Sequence<?> sourceFiles, // <FileT> expected.
Sequence<?> sourceJars, // <FileT> expected.
JavaToolchainT javaToolchain,
- JavaRuntimeT hostJavabase,
- Location location)
+ JavaRuntimeT hostJavabase)
throws EvalException;
@SkylarkCallable(
@@ -412,12 +397,10 @@
doc =
"A JavaToolchainInfo to be used for retrieving the ijar "
+ "tool. Only set when use_ijar is True."),
- },
- useLocation = true)
+ })
// TODO(b/78512644): migrate callers to passing explicit javacopts or using custom toolchains, and
// delete
- ImmutableList<String> getDefaultJavacOpts(JavaToolchainT javaToolchain, Location loc)
- throws EvalException;
+ ImmutableList<String> getDefaultJavacOpts(JavaToolchainT javaToolchain) throws EvalException;
@SkylarkCallable(
name = "merge",
@@ -576,8 +559,6 @@
type = JavaToolchainSkylarkApiProviderApi.class,
doc = "The toolchain."),
},
- useLocation = true,
enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_GOOGLE_LEGACY_API)
- Label getJavaToolchainLabel(JavaToolchainSkylarkApiProviderApi toolchain, Location location)
- throws EvalException;
+ Label getJavaToolchainLabel(JavaToolchainSkylarkApiProviderApi toolchain) throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java
index 271cb71..069dec6 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.java;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
@@ -236,7 +235,6 @@
+ " tools can use this information for more efficient processing."),
},
selfCall = true,
- useLocation = true,
useStarlarkThread = true)
@SkylarkConstructor(objectType = JavaInfoApi.class, receiverNameForDoc = "JavaInfo")
JavaInfoApi<?> javaInfo(
@@ -248,7 +246,6 @@
Sequence<?> runtimeDeps,
Sequence<?> exports,
Object jdepsApi,
- Location loc,
StarlarkThread thread)
throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java
index 08a4944..c188bf8 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/PlatformInfoApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.platform;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -27,6 +26,7 @@
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
import com.google.devtools.build.lib.syntax.StarlarkSemantics.FlagIdentifier;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Map;
/** Info object representing data about a specific platform. */
@@ -120,7 +120,7 @@
doc = "The exec properties for the platform.")
},
selfCall = true,
- useLocation = true,
+ useStarlarkThread = true,
enableOnlyWithFlag = FlagIdentifier.EXPERIMENTAL_PLATFORM_API)
@SkylarkConstructor(objectType = PlatformInfoApi.class, receiverNameForDoc = "PlatformInfo")
PlatformInfoT platformInfo(
@@ -128,7 +128,7 @@
Object parent,
Sequence<?> constraintValues,
Object execProperties,
- Location location)
+ StarlarkThread thread)
throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java
index b953eb5..b8e5be3 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform/ToolchainInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.platform;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -23,6 +22,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
/** Info object representing data about a specific toolchain. */
@SkylarkModule(
@@ -44,7 +44,8 @@
documented = false,
extraKeywords = @Param(name = "kwargs", doc = "Dictionary of additional entries."),
selfCall = true,
- useLocation = true)
- ToolchainInfoApi toolchainInfo(Dict<String, Object> kwargs, Location loc) throws EvalException;
+ useStarlarkThread = true)
+ ToolchainInfoApi toolchainInfo(Dict<String, Object> kwargs, StarlarkThread thread)
+ throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyInfoApi.java
index 11b051f..d5a9c55 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.python;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -24,6 +23,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
/** Provider instance for the Python rules. */
@@ -122,7 +122,7 @@
doc = "The value for the new object's <code>has_py3_only_sources</code> field.")
},
selfCall = true,
- useLocation = true)
+ useStarlarkThread = true)
@SkylarkConstructor(objectType = PyInfoApi.class, receiverNameForDoc = "PyInfo")
PyInfoApi<?> constructor(
Depset transitiveSources,
@@ -130,7 +130,7 @@
Object importsUncast,
boolean hasPy2OnlySources,
boolean hasPy3OnlySources,
- Location loc)
+ StarlarkThread thread)
throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyRuntimeInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyRuntimeInfoApi.java
index 6235a2a..f053951 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyRuntimeInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/python/PyRuntimeInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.python;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -24,6 +23,7 @@
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
import javax.annotation.Nullable;
@@ -134,15 +134,15 @@
named = true,
doc = "The value for the new object's <code>python_version</code> field."),
},
- selfCall = true,
- useLocation = true)
+ useStarlarkThread = true,
+ selfCall = true)
@SkylarkConstructor(objectType = PyRuntimeInfoApi.class, receiverNameForDoc = "PyRuntimeInfo")
PyRuntimeInfoApi<?> constructor(
Object interpreterPathUncast,
Object interpreterUncast,
Object filesUncast,
String pythonVersion,
- Location loc)
+ StarlarkThread thread)
throws EvalException;
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java
index e9119e7..a5203f5 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/RepositoryModuleApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.repository;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkGlobalLibrary;
@@ -108,7 +107,6 @@
named = true,
positional = false)
},
- useLocation = true,
useStarlarkThread = true)
BaseFunction repositoryRule(
StarlarkFunction implementation,
@@ -118,7 +116,6 @@
Boolean configure,
Boolean remotable,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException;
@@ -128,8 +125,6 @@
"When --incompatible_use_cc_configure_from_rules_cc is set to true, Bazel will "
+ "fail the build. Please see https://github.com/bazelbuild/bazel/issues/10134 for "
+ "details and migration instructions.",
- useLocation = true,
useStarlarkThread = true)
- void failWithIncompatibleUseCcConfigureFromRulesCc(Location location, StarlarkThread thread)
- throws EvalException;
+ void failWithIncompatibleUseCcConfigureFromRulesCc(StarlarkThread thread) throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
index 510d377..57fcdfc 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository/SkylarkRepositoryContextApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.repository;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.ParamType;
@@ -25,6 +24,7 @@
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Sequence;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
/** Skylark API for the repository_rule's context. */
@@ -88,7 +88,7 @@
@SkylarkCallable(
name = "symlink",
doc = "Creates a symlink on the filesystem.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "from",
@@ -107,13 +107,13 @@
},
doc = "path of the symlink to create, relative to the repository directory."),
})
- void symlink(Object from, Object to, Location location)
+ void symlink(Object from, Object to, StarlarkThread thread)
throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@SkylarkCallable(
name = "file",
doc = "Generates a file in the repository directory with the provided content.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "path",
@@ -145,7 +145,7 @@
+ " the default and remove this parameter."),
})
void createFile(
- Object path, String content, Boolean executable, Boolean legacyUtf8, Location location)
+ Object path, String content, Boolean executable, Boolean legacyUtf8, StarlarkThread thread)
throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@SkylarkCallable(
@@ -156,7 +156,7 @@
+ "the corresponding value. The result is written in <code>path</code>. An optional"
+ "<code>executable</code> argument (default to true) can be set to turn on or off"
+ "the executable bit.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "path",
@@ -192,13 +192,13 @@
Object template,
Dict<?, ?> substitutions, // <String, String> expected
Boolean executable,
- Location location)
+ StarlarkThread thread)
throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@SkylarkCallable(
name = "read",
doc = "Reads the content of a file on the filesystem.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "path",
@@ -209,7 +209,7 @@
},
doc = "path of the file to read from."),
})
- String readFile(Object path, Location location)
+ String readFile(Object path, StarlarkThread thread)
throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@SkylarkCallable(
@@ -226,7 +226,7 @@
+ " returns an <code>exec_result</code> structure containing the output of the"
+ " command. The <code>environment</code> map can be used to override some"
+ " environment variables to be passed to the process.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "arguments",
@@ -267,7 +267,7 @@
Dict<?, ?> environment, // <String, String> expected
boolean quiet,
String workingDirectory,
- Location location)
+ StarlarkThread thread)
throws EvalException, RepositoryFunctionExceptionT, InterruptedException;
@SkylarkCallable(
@@ -275,7 +275,7 @@
doc =
"Deletes a file or a directory. Returns a bool, indicating whether the file or directory"
+ " was actually deleted by this call.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "path",
@@ -287,7 +287,7 @@
"Path of the file to delete, relative to the repository directory, or absolute."
+ " Can be a path or a string."),
})
- boolean delete(Object path, Location location)
+ boolean delete(Object path, StarlarkThread thread)
throws EvalException, RepositoryFunctionExceptionT, InterruptedException;
@SkylarkCallable(
@@ -299,7 +299,7 @@
+ "unified diff format</a> file. "
+ "The Bazel-native patch implementation doesn't support fuzz match and binary patch "
+ "like the patch command line tool.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "patch_file",
@@ -318,7 +318,7 @@
defaultValue = "0",
doc = "strip the specified number of leading components from file names."),
})
- void patch(Object patchFile, Integer strip, Location location)
+ void patch(Object patchFile, Integer strip, StarlarkThread thread)
throws EvalException, RepositoryFunctionExceptionT, InterruptedException;
@SkylarkCallable(
@@ -327,7 +327,7 @@
"Returns the path of the corresponding program or None "
+ "if there is no such program in the path.",
allowReturnNones = true,
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "program",
@@ -335,7 +335,7 @@
named = false,
doc = "Program to find in the path."),
})
- RepositoryPathApi<?> which(String program, Location location) throws EvalException;
+ RepositoryPathApi<?> which(String program, StarlarkThread thread) throws EvalException;
@SkylarkCallable(
name = "download",
@@ -343,7 +343,7 @@
"Downloads a file to the output path for the provided url and returns a struct"
+ " containing a hash of the file with the fields <code>sha256</code> and"
+ " <code>integrity</code>.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "url",
@@ -424,13 +424,13 @@
String canonicalId,
Dict<?, ?> auth, // <String, Dict<?, ?>> expected
String integrity,
- Location location)
+ StarlarkThread thread)
throws RepositoryFunctionExceptionT, EvalException, InterruptedException;
@SkylarkCallable(
name = "extract",
doc = "Extract an archive to the repository directory.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "archive",
@@ -467,7 +467,7 @@
+ " <code>build_file</code>, this field can be used to strip it from extracted"
+ " files."),
})
- void extract(Object archive, Object output, String stripPrefix, Location location)
+ void extract(Object archive, Object output, String stripPrefix, StarlarkThread thread)
throws RepositoryFunctionExceptionT, InterruptedException, EvalException;
@SkylarkCallable(
@@ -476,7 +476,7 @@
"Downloads a file to the output path for the provided url, extracts it, and returns"
+ " a struct containing a hash of the downloaded file with the fields"
+ " <code>sha256</code> and <code>integrity</code>.",
- useLocation = true,
+ useStarlarkThread = true,
parameters = {
@Param(
name = "url",
@@ -580,6 +580,6 @@
String canonicalId,
Dict<?, ?> auth, // <String, Dict<?, ?>> expected
String integrity,
- Location location)
+ StarlarkThread thread)
throws RepositoryFunctionExceptionT, InterruptedException, EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
index bd605d6..d595eb8 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test/CoverageCommonApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkbuildapi.test;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -75,13 +74,11 @@
noneable = true,
defaultValue = "None",
type = Sequence.class),
- },
- useLocation = true)
+ })
InstrumentedFilesInfoApi instrumentedFilesInfo(
RuleContextT skylarkRuleContext,
Sequence<?> sourceAttributes, // <String> expected
Sequence<?> dependencyAttributes, // <String> expected
- Object extensions,
- Location location)
+ Object extensions)
throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
index 2b7a08e..af2cf2f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/SkylarkCallable.java
@@ -56,7 +56,6 @@
* {@code extraPositionals};
* <li>a {@code Dict<String, Object>} of extra keyword arguments ({@code **kwargs}), if
* {@code extraKeywords};
- * <li>a {@code Location}, if {@code useLocation};
* <li>a {@code StarlarkThread}, if {@code useStarlarkThread};
* <li>a {@code StarlarkSemantics}, if {@code useStarlarkSemantics}.
* </ol>
@@ -171,15 +170,6 @@
boolean allowReturnNones() default false;
/**
- * If true, the location of the call site will be passed as an argument of the annotated function.
- * (Thus, the annotated method signature must contain Location as a parameter. See the
- * interface-level javadoc for details.)
- *
- * <p>This is incompatible with structField=true. If structField is true, this must be false.
- */
- boolean useLocation() default false;
-
- /**
* If true, the StarlarkThread will be passed as an argument of the annotated function. (Thus, the
* annotated method signature must contain StarlarkThread as a parameter. See the interface-level
* javadoc for details.)
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
index 78464b3..234ec2e 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessor.java
@@ -215,13 +215,6 @@
"a SkylarkCallable-annotated method with structField=true may not also specify"
+ " useStarlarkThread");
}
- if (annot.useLocation()) {
- errorf(
- method,
- "a SkylarkCallable-annotated method with structField=true may not also specify"
- + " useLocation");
- }
-
if (!annot.extraPositionals().name().isEmpty()) {
errorf(
method,
@@ -510,18 +503,6 @@
}
}
- if (annot.useLocation()) {
- VariableElement param = params.get(index++);
- TypeMirror locationType = getType("com.google.devtools.build.lib.events.Location");
- if (!types.isSameType(locationType, param.asType())) {
- errorf(
- param,
- "for useLocation special parameter '%s', got type %s, want Location",
- param.getSimpleName(),
- param.asType());
- }
- }
-
if (annot.useStarlarkThread()) {
VariableElement param = params.get(index++);
TypeMirror threadType = getType("com.google.devtools.build.lib.syntax.StarlarkThread");
@@ -563,7 +544,6 @@
int n = 0;
n += annot.extraPositionals().name().isEmpty() ? 0 : 1;
n += annot.extraKeywords().name().isEmpty() ? 0 : 1;
- n += annot.useLocation() ? 1 : 0;
n += annot.useStarlarkThread() ? 1 : 0;
n += annot.useStarlarkSemantics() ? 1 : 0;
return n;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java
index a95d20f..2692e0d 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BuiltinCallable.java
@@ -16,7 +16,6 @@
import com.google.common.base.Joiner;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.util.SpellChecker;
import java.util.ArrayList;
@@ -63,14 +62,14 @@
}
@Override
- public Object fastcall(StarlarkThread thread, Location loc, Object[] positional, Object[] named)
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named)
throws EvalException, InterruptedException {
MethodDescriptor desc =
this.desc != null ? this.desc : getMethodDescriptor(thread.getSemantics());
Preconditions.checkArgument(
!desc.isStructField(),
"struct field methods should be handled by DotExpression separately");
- Object[] vector = getArgumentVector(thread, loc, desc, positional, named);
+ Object[] vector = getArgumentVector(thread, desc, positional, named);
return desc.call(
obj instanceof String ? StringModule.INSTANCE : obj, vector, thread.mutability());
}
@@ -120,7 +119,6 @@
*/
private Object[] getArgumentVector(
StarlarkThread thread,
- Location loc,
MethodDescriptor desc, // intentionally shadows this.desc
Object[] positional,
Object[] named)
@@ -148,9 +146,6 @@
if (desc.acceptsExtraKwargs()) {
n++;
}
- if (desc.isUseLocation()) {
- n++;
- }
if (desc.isUseStarlarkThread()) {
n++;
}
@@ -319,9 +314,6 @@
if (desc.acceptsExtraKwargs()) {
vector[i++] = Dict.wrap(thread.mutability(), kwargs);
}
- if (desc.isUseLocation()) {
- vector[i++] = loc;
- }
if (desc.isUseStarlarkThread()) {
vector[i++] = thread;
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
index 90f8312..eb05aa0 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Eval.java
@@ -526,7 +526,7 @@
}
return result;
} catch (EvalException ex) {
- throw ex.ensureLocation(dot.getStartLocation());
+ throw ex.ensureLocation(dot.getStartLocation()); // TODO(adonovan): use dot token
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodDescriptor.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodDescriptor.java
index b8997b4..82399b9 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodDescriptor.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodDescriptor.java
@@ -42,7 +42,6 @@
private final boolean extraKeywords;
private final boolean selfCall;
private final boolean allowReturnNones;
- private final boolean useLocation;
private final boolean useStarlarkThread;
private final boolean useStarlarkSemantics;
@@ -58,7 +57,6 @@
boolean extraKeywords,
boolean selfCall,
boolean allowReturnNones,
- boolean useLocation,
boolean useStarlarkThread,
boolean useStarlarkSemantics) {
this.method = method;
@@ -72,7 +70,6 @@
this.extraKeywords = extraKeywords;
this.selfCall = selfCall;
this.allowReturnNones = allowReturnNones;
- this.useLocation = useLocation;
this.useStarlarkThread = useStarlarkThread;
this.useStarlarkSemantics = useStarlarkSemantics;
}
@@ -102,7 +99,6 @@
!annotation.extraKeywords().name().isEmpty(),
annotation.selfCall(),
annotation.allowReturnNones(),
- annotation.useLocation(),
annotation.useStarlarkThread(),
annotation.useStarlarkSemantics());
}
@@ -194,11 +190,6 @@
return useStarlarkSemantics;
}
- /** @see SkylarkCallable#useLocation() */
- boolean isUseLocation() {
- return useLocation;
- }
-
/** @see SkylarkCallable#allowReturnNones() */
boolean isAllowReturnNones() {
return allowReturnNones;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Starlark.java b/src/main/java/com/google/devtools/build/lib/syntax/Starlark.java
index c491581..113ab58 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Starlark.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Starlark.java
@@ -354,7 +354,7 @@
thread.push(callable);
try {
- return callable.fastcall(thread, thread.getCallerLocation(), positional, named);
+ return callable.fastcall(thread, positional, named);
} finally {
thread.pop();
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkCallable.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkCallable.java
index ca405b1..b28d923 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkCallable.java
@@ -38,13 +38,11 @@
* <p>The default implementation throws an exception.
*
* @param thread the StarlarkThread in which the function is called
- * @param loc source location of the Starlark call expression, or BUILTIN; (going away)
* @param args a tuple of the arguments passed by position
* @param kwargs a new, mutable dict of the arguments passed by keyword. Iteration order is
* determined by keyword order in the call expression.
*/
- default Object call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ default Object call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException, InterruptedException {
throw Starlark.errorf("function %s not implemented", getName());
}
@@ -66,13 +64,11 @@
* named arguments. Other implementations of this method should similarly reject duplicates.
*
* @param thread the StarlarkThread in which the function is called
- * @param loc source location of the Starlark call expression, or BUILTIN; (going away)
* @param positional a list of positional arguments
* @param named a list of named arguments, as alternating Strings/Objects. May contain dups.
*/
default Object fastcall(
StarlarkThread thread,
- Location loc, // TODO(adonovan): eliminate
Object[] positional,
Object[] named)
throws EvalException, InterruptedException {
@@ -88,7 +84,7 @@
Tuple<Object> args = (Tuple<Object>) arguments[0];
@SuppressWarnings("unchecked")
Dict<String, Object> kwargs = (Dict<String, Object>) arguments[1];
- return call(thread, loc, args, kwargs);
+ return call(thread, args, kwargs);
}
/** Returns the form this callable value should take in a stack trace. */
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkFunction.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkFunction.java
index b9bf93b..4d36be6 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkFunction.java
@@ -92,7 +92,7 @@
}
@Override
- public Object fastcall(StarlarkThread thread, Location loc, Object[] positional, Object[] named)
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named)
throws EvalException, InterruptedException {
if (thread.mutability().isFrozen()) {
throw Starlark.errorf("Trying to call in frozen environment");
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeBuildApiGlobals.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeBuildApiGlobals.java
index a89f105..d05ff68 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeBuildApiGlobals.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeBuildApiGlobals.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.LateBoundDefaultApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkBuildApiGlobals;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -26,8 +25,8 @@
public class FakeBuildApiGlobals implements SkylarkBuildApiGlobals {
@Override
- public LateBoundDefaultApi configurationField(
- String fragment, String name, Location loc, StarlarkThread thread) throws EvalException {
+ public LateBoundDefaultApi configurationField(String fragment, String name, StarlarkThread thread)
+ throws EvalException {
return new FakeLateBoundDefaultApi();
}
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeDefaultInfoProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeDefaultInfoProvider.java
index 980f6e7..57fa579 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeDefaultInfoProvider.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeDefaultInfoProvider.java
@@ -14,13 +14,13 @@
package com.google.devtools.build.skydoc.fakebuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.DefaultInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.DefaultInfoApi.DefaultInfoApiProvider;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.RunfilesApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
/**
* Fake implementation of {@link DefaultInfoApiProvider}.
@@ -28,8 +28,14 @@
public class FakeDefaultInfoProvider implements DefaultInfoApiProvider<RunfilesApi, FileApi> {
@Override
- public DefaultInfoApi constructor(Object files, Object runfiles, Object dataRunfiles,
- Object defaultRunfiles, Object executable, Location loc) throws EvalException {
+ public DefaultInfoApi constructor(
+ Object files,
+ Object runfiles,
+ Object dataRunfiles,
+ Object defaultRunfiles,
+ Object executable,
+ StarlarkThread thread)
+ throws EvalException {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeOutputGroupInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeOutputGroupInfo.java
index f64e0b3..ea491d6 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeOutputGroupInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeOutputGroupInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.OutputGroupInfoApi;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -26,12 +25,12 @@
public class FakeOutputGroupInfo implements OutputGroupInfoApi {
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
@@ -44,7 +43,7 @@
public static class FakeOutputGroupInfoProvider implements OutputGroupInfoApiProvider {
@Override
- public OutputGroupInfoApi constructor(Dict<?, ?> kwargs, Location loc) throws EvalException {
+ public OutputGroupInfoApi constructor(Dict<?, ?> kwargs) throws EvalException {
return new FakeOutputGroupInfo();
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
index f152933..5f5f470 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.Dict;
@@ -34,8 +33,7 @@
private final String name = "ProviderIdentifier" + idCounter++;
@Override
- public Object call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs) {
+ public Object call(StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs) {
return new FakeStructApi();
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
index b42dde6..545e0da 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAttrApi.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.skydoc.fakebuildapi;
import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAttrApi;
import com.google.devtools.build.lib.skylarkbuildapi.core.ProviderApi;
import com.google.devtools.build.lib.syntax.Dict;
@@ -40,7 +39,6 @@
String doc,
Boolean mandatory,
Sequence<?> values,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(AttributeType.INT, doc, mandatory, ImmutableList.of(), defaultInt);
@@ -52,7 +50,6 @@
String doc,
Boolean mandatory,
Sequence<?> values,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(
@@ -76,7 +73,6 @@
Boolean singleFile,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException {
List<List<String>> allNameGroups = new ArrayList<>();
@@ -93,7 +89,6 @@
Boolean allowEmpty,
Sequence<?> defaultList,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(
@@ -107,7 +102,6 @@
Boolean allowEmpty,
Sequence<?> defaultList,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(
@@ -127,7 +121,6 @@
Boolean nonEmpty,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException {
List<List<String>> allNameGroups = new ArrayList<>();
@@ -150,7 +143,6 @@
Boolean nonEmpty,
Object cfg,
Sequence<?> aspects,
- Location loc,
StarlarkThread thread)
throws EvalException {
List<List<String>> allNameGroups = new ArrayList<>();
@@ -163,8 +155,7 @@
@Override
public Descriptor boolAttribute(
- Boolean defaultO, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
- throws EvalException {
+ Boolean defaultO, String doc, Boolean mandatory, StarlarkThread thread) throws EvalException {
return new FakeDescriptor(
AttributeType.BOOLEAN,
doc,
@@ -175,8 +166,7 @@
@Override
public Descriptor outputAttribute(
- Object defaultO, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
- throws EvalException {
+ Object defaultO, String doc, Boolean mandatory, StarlarkThread thread) throws EvalException {
return new FakeDescriptor(AttributeType.OUTPUT, doc, mandatory, ImmutableList.of(), defaultO);
}
@@ -187,7 +177,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(
@@ -201,7 +190,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(
@@ -215,7 +203,6 @@
String doc,
Boolean mandatory,
Boolean nonEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeDescriptor(
@@ -224,8 +211,7 @@
@Override
public Descriptor licenseAttribute(
- Object defaultO, String doc, Boolean mandatory, Location loc, StarlarkThread thread)
- throws EvalException {
+ Object defaultO, String doc, Boolean mandatory, StarlarkThread thread) throws EvalException {
return new FakeDescriptor(
AttributeType.STRING_LIST, doc, mandatory, ImmutableList.of(), defaultO);
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java
index be27cc9..26e07ec 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkNativeModuleApi.java
@@ -39,45 +39,40 @@
Sequence<?> exclude,
Integer excludeDirectories,
Object allowEmpty,
- Location loc,
StarlarkThread thread)
throws EvalException, InterruptedException {
return StarlarkList.of(thread.mutability());
}
@Override
- public Object existingRule(String name, Location loc, StarlarkThread thread)
- throws EvalException, InterruptedException {
+ public Object existingRule(String name, StarlarkThread thread) {
return null;
}
@Override
- public Dict<String, Dict<String, Object>> existingRules(Location loc, StarlarkThread thread)
- throws EvalException, InterruptedException {
+ public Dict<String, Dict<String, Object>> existingRules(StarlarkThread thread) {
return Dict.of(thread.mutability());
}
@Override
public NoneType packageGroup(
- String name, Sequence<?> packages, Sequence<?> includes, Location loc, StarlarkThread thread)
- throws EvalException {
+ String name, Sequence<?> packages, Sequence<?> includes, StarlarkThread thread) {
return null;
}
@Override
public NoneType exportsFiles(
- Sequence<?> srcs, Object visibility, Object licenses, Location loc, StarlarkThread thread)
- throws EvalException {
+ Sequence<?> srcs, Object visibility, Object licenses, StarlarkThread thread) {
return null;
}
@Override
- public String packageName(Location loc, StarlarkThread thread) throws EvalException {
+ public String packageName(StarlarkThread thread) {
return "";
}
@Override
- public String repositoryName(Location location, StarlarkThread thread) throws EvalException {
+ public String repositoryName(StarlarkThread thread) {
return "";
}
@@ -90,8 +85,7 @@
// "native".
return new StarlarkCallable() {
@Override
- public Object fastcall(
- StarlarkThread thread, Location loc, Object[] positional, Object[] named) {
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named) {
return Starlark.NONE;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
index 902fc3e..72cc829 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
@@ -85,7 +85,8 @@
}
@Override
- public ProviderApi provider(String doc, Object fields, Location location) throws EvalException {
+ public ProviderApi provider(String doc, Object fields, StarlarkThread thread)
+ throws EvalException {
FakeProviderApi fakeProvider = new FakeProviderApi();
// Field documentation will be output preserving the order in which the fields are listed.
ImmutableList.Builder<ProviderFieldInfo> providerFieldInfos = ImmutableList.builder();
@@ -97,7 +98,7 @@
fields,
Sequence.class,
String.class,
- location,
+ null,
"Expected list of strings or dictionary of string -> string for 'fields'");
for (String fieldName : fieldNames) {
providerFieldInfos.add(asProviderFieldInfo(fieldName, "(Undocumented)"));
@@ -146,8 +147,7 @@
Object analysisTest,
Object buildSetting,
Object cfg,
- Location loc,
- StarlarkThread funcallThread)
+ StarlarkThread thread)
throws EvalException {
ImmutableMap.Builder<String, FakeDescriptor> attrsMapBuilder = ImmutableMap.builder();
if (attrs != null && attrs != Starlark.NONE) {
@@ -168,14 +168,14 @@
// Only the Builder is passed to RuleInfoWrapper as the rule name is not yet available.
RuleInfo.Builder ruleInfo = RuleInfo.newBuilder().setDocString(doc).addAllAttribute(attrInfos);
+ Location loc = thread.getCallerLocation();
ruleInfoList.add(new RuleInfoWrapper(functionIdentifier, loc, ruleInfo));
return functionIdentifier;
}
@Override
- public Label label(
- String labelString, Boolean relativeToCallerRepository, Location loc, StarlarkThread thread)
+ public Label label(String labelString, Boolean relativeToCallerRepository, StarlarkThread thread)
throws EvalException {
try {
return Label.parseAbsolute(
@@ -183,7 +183,7 @@
/* defaultToMain= */ false,
/* repositoryMapping= */ ImmutableMap.of());
} catch (LabelSyntaxException e) {
- throw new EvalException(loc, "Illegal absolute label syntax: " + labelString);
+ throw Starlark.errorf("Illegal absolute label syntax: %s", labelString);
}
}
@@ -199,8 +199,7 @@
Sequence<?> toolchains,
String doc,
Boolean applyToFiles,
- Location loc,
- StarlarkThread funcallThread)
+ StarlarkThread thread)
throws EvalException {
FakeSkylarkAspect fakeAspect = new FakeSkylarkAspect();
ImmutableMap.Builder<String, FakeDescriptor> attrsMapBuilder = ImmutableMap.builder();
@@ -232,7 +231,7 @@
.addAllAttribute(attrInfos)
.addAllAspectAttribute(aspectAttrs);
- aspectInfoList.add(new AspectInfoWrapper(fakeAspect, loc, aspectInfo));
+ aspectInfoList.add(new AspectInfoWrapper(fakeAspect, thread.getCallerLocation(), aspectInfo));
return fakeAspect;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeStructApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeStructApi.java
index 8e869af..70ad497 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeStructApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeStructApi.java
@@ -19,12 +19,12 @@
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Ordering;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.core.StructApi;
import com.google.devtools.build.lib.syntax.ClassObject;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
import java.util.Map;
import javax.annotation.Nullable;
@@ -44,12 +44,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
@@ -107,8 +107,8 @@
public static class FakeStructProviderApi implements StructProviderApi {
@Override
- public StructApi createStruct(Dict<?, ?> kwargs, Location loc) throws EvalException {
- return new FakeStructApi(kwargs.getContents(String.class, Object.class, "kwargs"));
+ public StructApi createStruct(Dict<String, Object> kwargs, StarlarkThread thread) {
+ return new FakeStructApi(kwargs);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidApplicationResourceInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidApplicationResourceInfo.java
index 956af77..43900e2 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidApplicationResourceInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidApplicationResourceInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidApplicationResourceInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidApplicationResourceInfoApi.AndroidApplicationResourceInfoApiProvider;
@@ -26,12 +25,12 @@
public class FakeAndroidApplicationResourceInfo implements AndroidDeviceBrokerInfoApi {
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java
index b2e555c..b81fe4f 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidDeviceBrokerInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidDeviceBrokerInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
@@ -25,12 +24,12 @@
public class FakeAndroidDeviceBrokerInfo implements AndroidDeviceBrokerInfoApi {
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java
index 803ebc3..d7bd9f5 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidInstrumentationInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidInstrumentationInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.ApkInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -30,12 +29,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java
index dbc17b3..95cedc1 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidNativeLibsInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidNativeLibsInfoApi;
import com.google.devtools.build.lib.syntax.Depset;
@@ -32,12 +31,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
index 36dfe23..1551fed 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidManifestInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.AndroidResourcesInfoApi;
@@ -102,12 +101,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
@@ -213,12 +212,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java
index f065a37..ac37732 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeApkInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.android;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.android.ApkInfoApi;
import com.google.devtools.build.lib.syntax.Dict;
@@ -47,12 +46,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
@@ -65,7 +64,7 @@
public static class FakeApkInfoProvider implements ApkInfoApiProvider {
@Override
- public ApkInfoApi<?> createInfo(Dict<String, Object> kwargs, Location loc) {
+ public ApkInfoApi<?> createInfo(Dict<String, Object> kwargs) {
return new FakeApkInfo();
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java
index 8130ff8..e5e6683 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.apple;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleDynamicFrameworkInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
@@ -46,12 +45,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java
index 1247342..9963ca8 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.apple;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleStaticLibraryInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi;
@@ -37,12 +36,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java
index 0df3d6d..20582d8 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigGlobalLibrary.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.config;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigGlobalLibraryApi;
import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigurationTransitionApi;
import com.google.devtools.build.lib.syntax.BaseFunction;
@@ -32,14 +31,13 @@
BaseFunction implementation,
Sequence<?> inputs,
Sequence<?> outputs,
- Location location,
StarlarkThread thread) {
return new FakeConfigurationTransition();
}
@Override
public ConfigurationTransitionApi analysisTestTransition(
- Dict<?, ?> changedSettings, Location location) {
+ Dict<?, ?> changedSettings, StarlarkThread thread) {
return new FakeConfigurationTransition();
}
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcInfo.java
index 95a3224..54b5259 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcInfo.java
@@ -14,13 +14,11 @@
package com.google.devtools.build.skydoc.fakebuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcCompilationContextApi;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcLinkingContextApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
-import com.google.devtools.build.lib.syntax.StarlarkThread;
/** Fake implementation of {@link CcInfoApi}. */
public class FakeCcInfo implements CcInfoApi {
@@ -36,12 +34,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return null;
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return null;
}
@@ -52,8 +50,7 @@
public static class Provider implements CcInfoApi.Provider {
@Override
- public CcInfoApi createInfo(
- Object ccCompilationContext, Object ccLinkingInfo, Location location, StarlarkThread thread)
+ public CcInfoApi createInfo(Object ccCompilationContext, Object ccLinkingInfo)
throws EvalException {
return new FakeCcInfo();
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
index 080980e..7c033c7 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcModule.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.cpp;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
@@ -166,7 +165,6 @@
boolean alwayslink,
String dynamicLibraryPath,
String interfaceLibraryPath,
- Location location,
StarlarkThread thread) {
return null;
}
@@ -177,7 +175,6 @@
Object librariesToLinkObject,
Object userLinkFlagsObject,
Object nonCodeInputs,
- Location location,
StarlarkThread thread) {
return null;
}
@@ -188,7 +185,6 @@
Object librariesToLinkObject,
Object userLinkFlagsObject,
Object nonCodeInputs,
- Location location,
StarlarkThread thread) {
return null;
}
@@ -243,7 +239,6 @@
boolean disallowPicOutputs,
boolean disallowNopicOutputs,
Sequence<?> additionalInputs,
- Location location,
StarlarkThread thread)
throws EvalException, InterruptedException {
return null;
@@ -264,7 +259,6 @@
boolean disallowStaticLibraries,
boolean disallowDynamicLibraries,
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException {
return null;
@@ -284,7 +278,6 @@
boolean linkDepsStatically,
Sequence<?> additionalInputs,
Object grepIncludes,
- Location location,
StarlarkThread thread)
throws InterruptedException, EvalException {
return null;
@@ -315,7 +308,7 @@
@Override
public CcCompilationOutputsApi<FileApi> createCompilationOutputsFromSkylark(
- Object objectsObject, Object picObjectsObject, Location location) {
+ Object objectsObject, Object picObjectsObject) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcToolchainConfigInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcToolchainConfigInfo.java
index d6d2476..a1b2aec 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcToolchainConfigInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeCcToolchainConfigInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcToolchainConfigInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
@@ -28,12 +27,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return null;
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
index adf110f..389fc64 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakeGoWrapCcHelper.java
@@ -117,7 +117,7 @@
@Override
public Depset /*<FileApi>*/ getGopackageFilesForStarlark(
- SkylarkRuleContextApi skylarkRuleContext, FileApi skylarkGopkg) {
+ SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, FileApi skylarkGopkg) {
return null;
}
@@ -129,7 +129,8 @@
}
@Override
- public Depset skylarkCollectTransitiveSwigIncludes(SkylarkRuleContextApi skylarkRuleContext) {
+ public Depset skylarkCollectTransitiveSwigIncludes(
+ SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
return null;
}
@@ -146,13 +147,14 @@
}
@Override
- public String skylarkGetMangledTargetName(SkylarkRuleContextApi skylarkRuleContext) {
+ public String skylarkGetMangledTargetName(
+ SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext) {
return null;
}
@Override
public WrapCcIncludeProviderApi getWrapCcIncludeProvider(
- SkylarkRuleContextApi skylarkRuleContext, Depset swigIncludes) {
+ SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, Depset swigIncludes) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyCcLinkParamsProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyCcLinkParamsProvider.java
index dfd2cb7..b4954ee 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyCcLinkParamsProvider.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyCcLinkParamsProvider.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyCcLinkParamsProviderApi;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -29,12 +28,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return null;
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
index 4a6e082..8d45288 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcHelper.java
@@ -87,7 +87,7 @@
@Override
public WrapCcIncludeProviderApi getWrapCcIncludeProvider(
- SkylarkRuleContextApi skylarkRuleContext, Depset swigIncludes) {
+ SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext, Depset swigIncludes) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcInfo.java
index f7a3be9..a8648aa 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/cpp/FakePyWrapCcInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.cpp;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.CcInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyWrapCcHelperApi;
import com.google.devtools.build.lib.skylarkbuildapi.cpp.PyWrapCcInfoApi;
@@ -33,12 +32,12 @@
public void repr(Printer printer) {}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return null;
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
index a7b2888..0fc383a 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
@@ -16,7 +16,6 @@
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
@@ -67,9 +66,7 @@
Sequence<?> sourcepathEntries,
Sequence<?> resources,
Boolean neverlink,
- Location loc,
- StarlarkThread thread)
- throws EvalException, InterruptedException {
+ StarlarkThread thread) {
return new FakeJavaInfo();
}
@@ -78,9 +75,7 @@
SkylarkActionFactoryApi actions,
FileApi jar,
Object targetLabel,
- FakeJavaToolchainSkylarkApiProviderApi javaToolchain,
- Location location)
- throws EvalException {
+ FakeJavaToolchainSkylarkApiProviderApi javaToolchain) {
return null;
}
@@ -89,9 +84,7 @@
SkylarkActionFactoryApi actions,
FileApi jar,
Label targetLabel,
- FakeJavaToolchainSkylarkApiProviderApi javaToolchain,
- Location location)
- throws EvalException {
+ FakeJavaToolchainSkylarkApiProviderApi javaToolchain) {
return null;
}
@@ -102,15 +95,13 @@
Sequence<?> sourceFiles,
Sequence<?> sourceJars,
FakeJavaToolchainSkylarkApiProviderApi javaToolchain,
- FakeJavaRuntimeInfoApi hostJavabase,
- Location location)
- throws EvalException {
+ FakeJavaRuntimeInfoApi hostJavabase) {
return null;
}
@Override
public ImmutableList<String> getDefaultJavacOpts(
- FakeJavaToolchainSkylarkApiProviderApi javaToolchain, Location loc) throws EvalException {
+ FakeJavaToolchainSkylarkApiProviderApi javaToolchain) throws EvalException {
return ImmutableList.of();
}
@@ -167,8 +158,8 @@
}
@Override
- public Label getJavaToolchainLabel(
- JavaToolchainSkylarkApiProviderApi toolchain, Location location) throws EvalException {
+ public Label getJavaToolchainLabel(JavaToolchainSkylarkApiProviderApi toolchain)
+ throws EvalException {
return null;
}
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
index 670e73c..bd653e4 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.java;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.java.JavaAnnotationProcessingApi;
import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCompilationInfoProviderApi;
@@ -97,12 +96,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
@@ -124,7 +123,6 @@
Sequence<?> runtimeDeps,
Sequence<?> exports,
Object jdepsApi,
- Location loc,
StarlarkThread thread)
throws EvalException {
return new FakeJavaInfo();
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaRuntimeInfoApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaRuntimeInfoApi.java
index 70439e9..cd7f697 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaRuntimeInfoApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaRuntimeInfoApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.java;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuntimeInfoApi;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
@@ -48,12 +47,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java
index 717a376..aed2a62 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaToolchainSkylarkApiProviderApi.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.java;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.java.JavaToolchainSkylarkApiProviderApi;
import com.google.devtools.build.lib.syntax.Depset;
@@ -60,12 +59,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyInfo.java
index 186ce93..79532b1 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyInfo.java
@@ -14,12 +14,12 @@
package com.google.devtools.build.skydoc.fakebuildapi.python;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.python.PyInfoApi;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
/** Fake implementation of {@link PyInfoApi}. */
public class FakePyInfo implements PyInfoApi<FileApi> {
@@ -62,7 +62,7 @@
Object importsUncast,
boolean hasPy2OnlySources,
boolean hasPy3OnlySources,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
return new FakePyInfo();
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyRuntimeInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyRuntimeInfo.java
index 2ff962d..fe9af06 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyRuntimeInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/python/FakePyRuntimeInfo.java
@@ -14,12 +14,12 @@
package com.google.devtools.build.skydoc.fakebuildapi.python;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
import com.google.devtools.build.lib.skylarkbuildapi.python.PyRuntimeInfoApi;
import com.google.devtools.build.lib.syntax.Depset;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
+import com.google.devtools.build.lib.syntax.StarlarkThread;
/** Fake implementation of {@link PyRuntimeInfoApi}. */
public class FakePyRuntimeInfo implements PyRuntimeInfoApi<FileApi> {
@@ -56,7 +56,7 @@
Object interpreterUncast,
Object filesUncast,
String pythonVersion,
- Location loc)
+ StarlarkThread thread)
throws EvalException {
return new FakePyRuntimeInfo();
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
index 9862bcb..f380bf9 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
@@ -58,7 +58,6 @@
Boolean configure,
Boolean remotable,
String doc,
- Location loc,
StarlarkThread thread)
throws EvalException {
List<AttributeInfo> attrInfos;
@@ -82,6 +81,7 @@
// Only the Builder is passed to RuleInfoWrapper as the rule name is not yet available.
RuleInfo.Builder ruleInfo = RuleInfo.newBuilder().setDocString(doc).addAllAttribute(attrInfos);
+ Location loc = thread.getCallerLocation();
ruleInfoList.add(new RuleInfoWrapper(functionIdentifier, loc, ruleInfo));
return functionIdentifier;
}
@@ -110,8 +110,8 @@
}
@Override
- public void failWithIncompatibleUseCcConfigureFromRulesCc(
- Location location, StarlarkThread thread) throws EvalException {
+ public void failWithIncompatibleUseCcConfigureFromRulesCc(StarlarkThread thread)
+ throws EvalException {
// Noop until --incompatible_use_cc_configure_from_rules_cc is implemented.
}
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
index 9d18026..2049bc1 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeCoverageCommon.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.test;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
import com.google.devtools.build.lib.skylarkbuildapi.platform.ConstraintValueInfoApi;
import com.google.devtools.build.lib.skylarkbuildapi.test.CoverageCommonApi;
@@ -32,8 +31,7 @@
SkylarkRuleContextApi<ConstraintValueInfoApi> skylarkRuleContext,
Sequence<?> sourceAttributes,
Sequence<?> dependencyAttributes,
- Object extensions,
- Location location) {
+ Object extensions) {
return null;
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java
index 9621fca..e856b80 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.test;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.test.ExecutionInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
@@ -31,12 +30,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java
index 6d73729..20e301d 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java
@@ -15,7 +15,6 @@
package com.google.devtools.build.skydoc.fakebuildapi.test;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.test.TestEnvironmentInfoApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Printer;
@@ -32,12 +31,12 @@
}
@Override
- public String toProto(Location loc) throws EvalException {
+ public String toProto() throws EvalException {
return "";
}
@Override
- public String toJson(Location loc) throws EvalException {
+ public String toJson() throws EvalException {
return "";
}
diff --git a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
index d6d0656..e886a73 100644
--- a/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
+++ b/src/test/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryContextTest.java
@@ -76,6 +76,8 @@
private Root root;
private Path workspaceFile;
private SkylarkRepositoryContext context;
+ private StarlarkThread thread =
+ StarlarkThread.builder(Mutability.create("test")).useDefaultSemantics().build();
private static String ONE_LINE_PATCH = "@@ -1,1 +1,2 @@\n line one\n+line two\n";
@@ -181,26 +183,26 @@
scratch.file("/path/bin/def").setExecutable(true);
scratch.file("/bin/undef");
- assertThat(context.which("anything", null)).isNull();
- assertThat(context.which("def", null)).isNull();
- assertThat(context.which("undef", null)).isNull();
- assertThat(context.which("true", null).toString()).isEqualTo("/bin/true");
- assertThat(context.which("false", null).toString()).isEqualTo("/path/sbin/false");
+ assertThat(context.which("anything", thread)).isNull();
+ assertThat(context.which("def", thread)).isNull();
+ assertThat(context.which("undef", thread)).isNull();
+ assertThat(context.which("true", thread).toString()).isEqualTo("/bin/true");
+ assertThat(context.which("false", thread).toString()).isEqualTo("/path/sbin/false");
}
@Test
public void testFile() throws Exception {
setUpContexForRule("test");
- context.createFile(context.path("foobar"), "", true, true, null);
- context.createFile(context.path("foo/bar"), "foobar", true, true, null);
- context.createFile(context.path("bar/foo/bar"), "", true, true, null);
+ context.createFile(context.path("foobar"), "", true, true, thread);
+ context.createFile(context.path("foo/bar"), "foobar", true, true, thread);
+ context.createFile(context.path("bar/foo/bar"), "", true, true, thread);
testOutputFile(outputDirectory.getChild("foobar"), "");
testOutputFile(outputDirectory.getRelative("foo/bar"), "foobar");
testOutputFile(outputDirectory.getRelative("bar/foo/bar"), "");
try {
- context.createFile(context.path("/absolute"), "", true, true, null);
+ context.createFile(context.path("/absolute"), "", true, true, thread);
fail("Expected error on creating path outside of the repository directory");
} catch (RepositoryFunctionException ex) {
assertThat(ex)
@@ -209,7 +211,7 @@
.isEqualTo("Cannot write outside of the repository directory for path /absolute");
}
try {
- context.createFile(context.path("../somepath"), "", true, true, null);
+ context.createFile(context.path("../somepath"), "", true, true, thread);
fail("Expected error on creating path outside of the repository directory");
} catch (RepositoryFunctionException ex) {
assertThat(ex)
@@ -218,7 +220,7 @@
.isEqualTo("Cannot write outside of the repository directory for path /somepath");
}
try {
- context.createFile(context.path("foo/../../somepath"), "", true, true, null);
+ context.createFile(context.path("foo/../../somepath"), "", true, true, thread);
fail("Expected error on creating path outside of the repository directory");
} catch (RepositoryFunctionException ex) {
assertThat(ex)
@@ -233,23 +235,23 @@
setUpContexForRule("testDelete");
Path bar = outputDirectory.getRelative("foo/bar");
SkylarkPath barPath = context.path(bar.getPathString());
- context.createFile(barPath, "content", true, true, null);
- assertThat(context.delete(barPath, null)).isTrue();
+ context.createFile(barPath, "content", true, true, thread);
+ assertThat(context.delete(barPath, thread)).isTrue();
- assertThat(context.delete(barPath, null)).isFalse();
+ assertThat(context.delete(barPath, thread)).isFalse();
Path tempFile = scratch.file("/abcde/b", "123");
- assertThat(context.delete(context.path(tempFile.getPathString()), null)).isTrue();
+ assertThat(context.delete(context.path(tempFile.getPathString()), thread)).isTrue();
Path innerDir = scratch.dir("/some/inner");
scratch.dir("/some/inner/deeper");
scratch.file("/some/inner/deeper.txt");
scratch.file("/some/inner/deeper/1.txt");
- assertThat(context.delete(innerDir.toString(), null)).isTrue();
+ assertThat(context.delete(innerDir.toString(), thread)).isTrue();
Path underWorkspace = root.getRelative("under_workspace");
try {
- context.delete(underWorkspace.toString(), null);
+ context.delete(underWorkspace.toString(), thread);
fail();
} catch (EvalException expected) {
assertThat(expected.getMessage())
@@ -262,15 +264,15 @@
ImmutableSet.of(PathFragment.create("under_workspace")),
StarlarkSemantics.DEFAULT_SEMANTICS,
/* repoRemoteExecutor= */ null);
- assertThat(context.delete(underWorkspace.toString(), null)).isTrue();
+ assertThat(context.delete(underWorkspace.toString(), thread)).isTrue();
}
@Test
public void testRead() throws Exception {
setUpContexForRule("test");
- context.createFile(context.path("foo/bar"), "foobar", true, true, null);
+ context.createFile(context.path("foo/bar"), "foobar", true, true, thread);
- String content = context.readFile(context.path("foo/bar"), null);
+ String content = context.readFile(context.path("foo/bar"), thread);
assertThat(content).isEqualTo("foobar");
}
@@ -278,11 +280,11 @@
public void testPatch() throws Exception {
setUpContexForRule("test");
SkylarkPath foo = context.path("foo");
- context.createFile(foo, "line one\n", false, true, null);
+ context.createFile(foo, "line one\n", false, true, thread);
SkylarkPath patchFile = context.path("my.patch");
context.createFile(
- context.path("my.patch"), "--- foo\n+++ foo\n" + ONE_LINE_PATCH, false, true, null);
- context.patch(patchFile, 0, null);
+ context.path("my.patch"), "--- foo\n+++ foo\n" + ONE_LINE_PATCH, false, true, thread);
+ context.patch(patchFile, 0, thread);
testOutputFile(foo.getPath(), String.format("line one%nline two%n"));
}
@@ -291,9 +293,9 @@
setUpContexForRule("test");
SkylarkPath patchFile = context.path("my.patch");
context.createFile(
- context.path("my.patch"), "--- foo\n+++ foo\n" + ONE_LINE_PATCH, false, true, null);
+ context.path("my.patch"), "--- foo\n+++ foo\n" + ONE_LINE_PATCH, false, true, thread);
try {
- context.patch(patchFile, 0, null);
+ context.patch(patchFile, 0, thread);
fail("Expected RepositoryFunctionException");
} catch (RepositoryFunctionException ex) {
assertThat(ex)
@@ -314,9 +316,9 @@
"--- ../other_root/foo\n" + "+++ ../other_root/foo\n" + ONE_LINE_PATCH,
false,
true,
- null);
+ thread);
try {
- context.patch(patchFile, 0, null);
+ context.patch(patchFile, 0, thread);
fail("Expected RepositoryFunctionException");
} catch (RepositoryFunctionException ex) {
assertThat(ex)
@@ -333,11 +335,11 @@
setUpContexForRule("test");
SkylarkPath foo = context.path("foo");
SkylarkPath patchFile = context.path("my.patch");
- context.createFile(foo, "line three\n", false, true, null);
+ context.createFile(foo, "line three\n", false, true, thread);
context.createFile(
- context.path("my.patch"), "--- foo\n+++ foo\n" + ONE_LINE_PATCH, false, true, null);
+ context.path("my.patch"), "--- foo\n+++ foo\n" + ONE_LINE_PATCH, false, true, thread);
try {
- context.patch(patchFile, 0, null);
+ context.patch(patchFile, 0, thread);
fail("Expected RepositoryFunctionException");
} catch (RepositoryFunctionException ex) {
assertThat(ex)
@@ -393,10 +395,10 @@
context.execute(
StarlarkList.of(/*mutability=*/ null, "/bin/cmd", "arg1"),
/*timeout=*/ 10,
- /* uncheckedEnvironment=*/ Dict.empty(),
- /* quiet= */ true,
- /* workingDirectory= */ "",
- Location.BUILTIN);
+ /*uncheckedEnvironment=*/ Dict.empty(),
+ /*quiet=*/ true,
+ /*workingDirectory=*/ "",
+ thread);
// Assert
verify(repoRemoteExecutor)
@@ -414,9 +416,9 @@
@Test
public void testSymlink() throws Exception {
setUpContexForRule("test");
- context.createFile(context.path("foo"), "foobar", true, true, null);
+ context.createFile(context.path("foo"), "foobar", true, true, thread);
- context.symlink(context.path("foo"), context.path("bar"), null);
+ context.symlink(context.path("foo"), context.path("bar"), thread);
testOutputFile(outputDirectory.getChild("bar"), "foobar");
assertThat(context.path("bar").realpath()).isEqualTo(context.path("foo"));
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
index 3cd9136..c2921cb 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java
@@ -137,43 +137,19 @@
}
@Test
- public void testLocationMissing() throws Exception {
- assertAbout(javaSource())
- .that(getFile("LocationMissing.java"))
- .processedWith(new SkylarkCallableProcessor())
- .failsToCompile()
- .withErrorContaining(
- "for useLocation special parameter 'shouldBeLoc', got type java.lang.String, want"
- + " Location");
- }
-
- @Test
public void testSkylarkInfoBeforeParams() throws Exception {
assertAbout(javaSource())
.that(getFile("SkylarkInfoBeforeParams.java"))
.processedWith(new SkylarkCallableProcessor())
.failsToCompile()
.withErrorContaining(
- "for useLocation special parameter 'two', got type java.lang.Integer, want Location");
+ "for useStarlarkThread special parameter 'three', got type java.lang.String, want"
+ + " StarlarkThread");
// Also reports:
// - annotated type java.lang.String of parameter 'one' is not assignable
- // to variable of type com.google.devtools.build.lib.events.Location
+ // to variable of type com.google.devtools.build.lib.events.StarlarkThread
// - annotated type java.lang.Integer of parameter 'two' is not assignable
- // to variable of type com.google.devtools.build.lib.syntax.StarlarkThread
- // - for useStarlarkThread special parameter 'three',
- // got type java.lang.String, want StarlarkThread
- }
-
- @Test
- public void testSkylarkInfoParamsWrongOrder() throws Exception {
- assertAbout(javaSource())
- .that(getFile("SkylarkInfoParamsWrongOrder.java"))
- .processedWith(new SkylarkCallableProcessor())
- .failsToCompile()
- .withErrorContaining(
- "for useLocation special parameter 'thread', got type"
- + " com.google.devtools.build.lib.syntax.StarlarkThread, want Location");
- // It also reports the converse error with location and thread swapped.
+ // to variable of type java.lang.String
}
@Test
@@ -267,8 +243,8 @@
.processedWith(new SkylarkCallableProcessor())
.failsToCompile()
.withErrorContaining(
- "method threeArgMethod is annotated with 1 Params plus 3 special parameters, but has"
- + " only 3 parameter variables");
+ "method threeArgMethod is annotated with 1 Params plus 2 special parameters, but has"
+ + " only 2 parameter variables");
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java
index 37d6a3c..3647138 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraKeywordsOutOfOrder.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.syntax.Dict;
@@ -32,10 +31,8 @@
documented = false,
parameters = {@Param(name = "one")},
extraKeywords = @Param(name = "kwargs"),
- useLocation = true,
useStarlarkThread = true)
- public String threeArgMethod(
- Dict<?, ?> kwargs, String one, Location location, StarlarkThread thread) {
+ public String threeArgMethod(Dict<?, ?> kwargs, String one, StarlarkThread thread) {
return "bar";
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java
index 4c65916..d97376b 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/ExtraPositionalsMissing.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.syntax.StarlarkThread;
@@ -30,9 +29,8 @@
documented = false,
parameters = {@Param(name = "one")},
extraPositionals = @Param(name = "args"),
- useLocation = true,
useStarlarkThread = true)
- public String threeArgMethod(String one, Location location, StarlarkThread thread) {
+ public String threeArgMethod(String one, StarlarkThread thread) {
return "bar";
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
index 64c6dea..c241066 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java
@@ -14,9 +14,7 @@
package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
-import com.google.devtools.build.lib.skylarkinterface.ParamType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.syntax.Dict;
import com.google.devtools.build.lib.syntax.Sequence;
@@ -46,12 +44,12 @@
name = "zero_arg_method_with_thread",
documented = false,
useStarlarkThread = true)
- public Integer zeroArgMethod(StarlarkThread thread) {
+ public Integer zeroArgMethodWithThread(StarlarkThread thread) {
return 0;
}
@SkylarkCallable(
- name = "three_arg_method_with_loc",
+ name = "three_arg_method",
documented = false,
parameters = {
@Param(name = "one", type = String.class, named = true),
@@ -62,27 +60,9 @@
named = true,
defaultValue = "None",
noneable = true),
- },
- useLocation = true)
- public String threeArgMethod(String one, Integer two, Object three, Location loc) {
- return "bar";
- }
-
- @SkylarkCallable(
- name = "three_arg_method_with_params",
- documented = false,
- parameters = {
- @Param(name = "one", type = String.class, named = true),
- @Param(name = "two", type = Integer.class, named = true),
- @Param(name = "three",
- allowedTypes = {
- @ParamType(type = String.class),
- @ParamType(type = Integer.class),
- },
- named = true, defaultValue = "None", noneable = true),
- })
+ })
public String threeArgMethod(String one, Integer two, Object three) {
- return "baz";
+ return "bar";
}
@SkylarkCallable(
@@ -93,10 +73,9 @@
@Param(name = "two", type = Integer.class, named = true),
@Param(name = "three", type = String.class, named = true),
},
- useLocation = true,
useStarlarkThread = true)
public String threeArgMethodWithParams(
- String one, Integer two, String three, Location loc, StarlarkThread thread) {
+ String one, Integer two, String three, StarlarkThread thread) {
return "baz";
}
@@ -120,10 +99,9 @@
named = true,
defaultValue = "five"),
@Param(name = "six", type = String.class, positional = false, named = true),
- },
- useLocation = true)
- public String manyArgMethodMixingPositoinalAndNamed(
- String one, String two, String three, String four, String five, String six, Location loc) {
+ })
+ public String manyArgMethodMixingPositionalAndNamed(
+ String one, String two, String three, String four, String five, String six) {
return "baz";
}
@@ -135,10 +113,9 @@
@Param(name = "two", type = Integer.class, named = true),
},
extraKeywords = @Param(name = "kwargs"),
- useLocation = true,
useStarlarkThread = true)
public String twoArgMethodWithParamsAndInfoAndKwargs(
- String one, Integer two, Dict<?, ?> kwargs, Location loc, StarlarkThread thread) {
+ String one, Integer two, Dict<String, Object> kwargs, StarlarkThread thread) {
return "blep";
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java
deleted file mode 100644
index ae26751..0000000
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
-
-import com.google.devtools.build.lib.skylarkinterface.Param;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.syntax.StarlarkThread;
-import com.google.devtools.build.lib.syntax.StarlarkValue;
-
-/**
- * Test case for a SkylarkCallable method which does not have an appropriate StarlarkThread
- * parameter despite having useLocation set.
- */
-public class LocationMissing implements StarlarkValue {
-
- @SkylarkCallable(
- name = "three_arg_method_missing_location",
- documented = false,
- parameters = {
- @Param(name = "one", type = String.class, named = true),
- @Param(name = "two", type = Integer.class, named = true),
- },
- useLocation = true,
- useStarlarkThread = true)
- public String threeArgMethod(String one, Integer two, String shouldBeLoc, StarlarkThread thread) {
- return "bar";
- }
-}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java
index 14a43c5..d07a7e7 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java
+++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java
@@ -14,15 +14,13 @@
package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.syntax.StarlarkThread;
import com.google.devtools.build.lib.syntax.StarlarkValue;
/**
- * Test case for a SkylarkCallable method which specifies skylark-info parameters (for example
- * StarlarkThread) before other parameters.
+ * Test case for a SkylarkCallable method which specifies StarlarkThread before other parameters.
*/
public class SkylarkInfoBeforeParams implements StarlarkValue {
@@ -34,10 +32,8 @@
@Param(name = "two", type = Integer.class, named = true),
@Param(name = "three", type = String.class, named = true)
},
- useLocation = true,
useStarlarkThread = true)
- public String threeArgMethod(
- Location location, StarlarkThread thread, String one, Integer two, String three) {
+ public String threeArgMethod(StarlarkThread thread, String one, Integer two, String three) {
return "bar";
}
}
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java
deleted file mode 100644
index 0cfdbc8..0000000
--- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.skylarkinterface.processor.testsources;
-
-import com.google.devtools.build.lib.events.Location;
-import com.google.devtools.build.lib.skylarkinterface.Param;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.syntax.StarlarkThread;
-import com.google.devtools.build.lib.syntax.StarlarkValue;
-
-/**
- * Test case for a SkylarkCallable method which specifies skylark-info parameters in the incorrect
- * relative order.
- */
-public class SkylarkInfoParamsWrongOrder implements StarlarkValue {
-
- @SkylarkCallable(
- name = "skylark_info_params_wrong_order",
- documented = false,
- parameters = {@Param(name = "some_param", type = String.class, named = true)},
- useLocation = true,
- useStarlarkThread = true)
- public String threeArgMethod(
- // Note environment should come after location.
- String someParam, StarlarkThread thread, Location location) {
- return "bar";
- }
-}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java b/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java
index 35c00d7..e65bb23 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/BaseFunctionTest.java
@@ -17,7 +17,6 @@
import static com.google.common.truth.Truth.assertWithMessage;
import static com.google.devtools.build.lib.testutil.MoreAsserts.assertThrows;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.syntax.util.EvaluationTestCase;
import java.util.Arrays;
import java.util.Map;
@@ -87,8 +86,7 @@
}
@Override
- public Object fastcall(
- StarlarkThread thread, Location loc, Object[] positional, Object[] named)
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named)
throws EvalException {
Object[] arguments =
Starlark.matchSignature(
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
index 236aea0..60a0d1d 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/EvaluationTest.java
@@ -18,7 +18,6 @@
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.events.EventCollector;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.syntax.util.EvaluationTestCase;
import com.google.devtools.build.lib.testutil.TestMode;
import java.util.Collections;
@@ -152,8 +151,7 @@
}
@Override
- public Object fastcall(
- StarlarkThread thread, Location loc, Object[] positional, Object[] named) {
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named) {
callCount++;
if (positional.length > 0 && Starlark.truth(positional[0])) {
Thread.currentThread().interrupt();
@@ -241,8 +239,7 @@
}
@Override
- public Object fastcall(
- StarlarkThread thread, Location loc, Object[] positional, Object[] named) {
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named) {
int sum = 0;
for (Object arg : positional) {
sum += (Integer) arg;
@@ -286,7 +283,6 @@
@Override
public Object call(
StarlarkThread thread,
- Location loc,
Tuple<Object> args,
Dict<String, Object> kwargs) {
return kwargs;
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/FunctionTest.java b/src/test/java/com/google/devtools/build/lib/syntax/FunctionTest.java
index 096247b..808884b 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/FunctionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/FunctionTest.java
@@ -15,7 +15,6 @@
import static com.google.common.truth.Truth.assertThat;
-import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.syntax.util.EvaluationTestCase;
import com.google.devtools.build.lib.testutil.MoreAsserts;
import java.util.ArrayList;
@@ -76,7 +75,7 @@
@Override
public NoneType call(
- StarlarkThread thread, Location loc, Tuple<Object> args, Dict<String, Object> kwargs)
+ StarlarkThread thread, Tuple<Object> args, Dict<String, Object> kwargs)
throws EvalException {
params.addAll(args);
return Starlark.NONE;
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index 98b0ee3..7256e3c 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -2061,8 +2061,7 @@
}
@Override
- public Object fastcall(
- StarlarkThread thread, Location loc, Object[] positional, Object[] named) {
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named) {
return "fromValues";
}
};
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/StarlarkThreadDebuggingTest.java b/src/test/java/com/google/devtools/build/lib/syntax/StarlarkThreadDebuggingTest.java
index 749f5ee..e667499 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/StarlarkThreadDebuggingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/StarlarkThreadDebuggingTest.java
@@ -62,8 +62,7 @@
}
@Override
- public Object fastcall(
- StarlarkThread thread, Location loc, Object[] positional, Object[] named) {
+ public Object fastcall(StarlarkThread thread, Object[] positional, Object[] named) {
result[0] = Debug.getCallStack(thread);
result[1] = thread.getCallStack();
return Starlark.NONE;