aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-01 13:59:14 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-01 14:01:14 -0800
commitb1e686aeb891d1515e4c44a04f851a810b10968c (patch)
tree246d57d691682b6545583907a9defb80cd60f307 /src
parent6070ba7fb59eabcbeb00fe0812e83bdd400bdfe6 (diff)
Migrate some users of useAst to useLocation
(It's good to avoid passing around more information than one needs, and FuncallExpression is pretty heavy when only a Location is necessary) RELNOTES: None. PiperOrigin-RevId: 187529568
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/repository/skylark/SkylarkRepositoryModule.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/SkylarkNativeModule.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/WorkspaceFactory.java32
4 files changed, 35 insertions, 30 deletions
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 ef6391b254..ebb131cd36 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
@@ -171,7 +171,7 @@ public class SkylarkRepositoryModule {
}
try {
RuleClass ruleClass = builder.build(ruleClassName, ruleClassName);
- PackageContext context = PackageFactory.getContext(env, ast);
+ PackageContext context = PackageFactory.getContext(env, ast.getLocation());
@SuppressWarnings("unchecked")
Map<String, Object> attributeValues = (Map<String, Object>) args[0];
return WorkspaceFactoryHelper.createAndAddRepositoryRule(
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 3f3ad09cb1..13e904589f 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
@@ -569,7 +569,7 @@ public final class PackageFactory {
// async glob functions cannot do the same because the Environment is not thread safe.
PackageContext context;
if (originalContext == null) {
- context = getContext(env, ast);
+ context = getContext(env, ast.getLocation());
} else {
context = originalContext;
}
@@ -759,7 +759,7 @@ public final class PackageFactory {
static Runtime.NoneType callExportsFiles(Object srcs, Object visibilityO, Object licensesO,
FuncallExpression ast, Environment env) throws EvalException, ConversionException {
- Package.Builder pkgBuilder = getContext(env, ast).pkgBuilder;
+ Package.Builder pkgBuilder = getContext(env, ast.getLocation()).pkgBuilder;
List<String> files = Type.STRING_LIST.convert(srcs, "'exports_files' operand");
RuleVisibility visibility;
@@ -845,7 +845,7 @@ public final class PackageFactory {
*/
// TODO(bazel-team): Remove in favor of package.distribs.
// TODO(bazel-team): Remove all these new*Function-s and/or have static functions
- // that consult the context dynamically via getContext(env, ast) since we have that,
+ // that consult the context dynamically via getContext(env, loc) since we have that,
// and share the functions with the native package... which requires unifying the List types.
@SkylarkSignature(name = "distribs", returnType = Runtime.NoneType.class,
doc = "Declare the distribution(s) for the code in the current package.",
@@ -929,7 +929,7 @@ public final class PackageFactory {
static SkylarkDict<String, Object> callGetRuleFunction(
String name, FuncallExpression ast, Environment env)
throws EvalException, ConversionException {
- PackageContext context = getContext(env, ast);
+ PackageContext context = getContext(env, ast.getLocation());
Target target = context.pkgBuilder.getTarget(name);
return targetDict(target, ast.getLocation(), env);
@@ -1095,7 +1095,7 @@ public final class PackageFactory {
static SkylarkDict<String, SkylarkDict<String, Object>> callGetRulesFunction(
FuncallExpression ast, Environment env)
throws EvalException {
- PackageContext context = getContext(env, ast);
+ PackageContext context = getContext(env, ast.getLocation());
Collection<Target> targets = context.pkgBuilder.getTargets();
Location loc = ast.getLocation();
@@ -1113,7 +1113,7 @@ public final class PackageFactory {
static Runtime.NoneType callPackageFunction(String name, Object packagesO, Object includesO,
FuncallExpression ast, Environment env) throws EvalException, ConversionException {
- PackageContext context = getContext(env, ast);
+ PackageContext context = getContext(env, ast.getLocation());
List<String> packages = Type.STRING_LIST.convert(
packagesO, "'package_group.packages argument'");
@@ -1169,7 +1169,7 @@ public final class PackageFactory {
public Object call(Object[] arguments, FuncallExpression ast, Environment env)
throws EvalException {
- Package.Builder pkgBuilder = getContext(env, ast).pkgBuilder;
+ Package.Builder pkgBuilder = getContext(env, ast.getLocation()).pkgBuilder;
// Validate parameter list
if (pkgBuilder.isPackageFunctionUsed()) {
@@ -1203,13 +1203,13 @@ public final class PackageFactory {
/**
* Get the PackageContext by looking up in the environment.
*/
- public static PackageContext getContext(Environment env, FuncallExpression ast)
+ public static PackageContext getContext(Environment env, Location location)
throws EvalException {
PackageContext value = (PackageContext) env.lookup(PKG_CONTEXT);
if (value == null) {
// if PKG_CONTEXT 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(ast.getLocation(),
+ throw new EvalException(location,
"The native module cannot be accessed from here. "
+ "Wrap the function in a macro and call it from a BUILD file");
}
@@ -1247,7 +1247,7 @@ public final class PackageFactory {
throws EvalException, InterruptedException {
env.checkLoadingOrWorkspacePhase(ruleClassName, ast.getLocation());
try {
- addRule(getContext(env, ast), kwargs, ast, env);
+ addRule(getContext(env, ast.getLocation()), kwargs, ast, env);
} catch (RuleFactory.InvalidRuleException | Package.NameConflictException e) {
throw new EvalException(ast.getLocation(), e.getMessage());
}
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 4f152d7fde..0f23a59ed5 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
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.packages;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
+import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
@@ -219,7 +220,7 @@ public class SkylarkNativeModule {
throws EvalException, ConversionException {
env.checkLoadingPhase("native.package_name", ast.getLocation());
PackageIdentifier packageId =
- PackageFactory.getContext(env, ast).getBuilder().getPackageIdentifier();
+ PackageFactory.getContext(env, ast.getLocation()).getBuilder().getPackageIdentifier();
return packageId.getPackageFragment().getPathString();
}
};
@@ -236,16 +237,16 @@ public class SkylarkNativeModule {
+ "<code>@</code>. This function is equivalent to the deprecated variable "
+ "<code>REPOSITORY_NAME</code>.",
parameters = {},
- useAst = true,
+ useLocation = true,
useEnvironment = true
)
static final BuiltinFunction repositoryName =
new BuiltinFunction("repository_name") {
- public String invoke(FuncallExpression ast, Environment env)
+ public String invoke(Location location, Environment env)
throws EvalException, ConversionException {
- env.checkLoadingPhase("native.repository_name", ast.getLocation());
+ env.checkLoadingPhase("native.repository_name", location);
PackageIdentifier packageId =
- PackageFactory.getContext(env, ast).getBuilder().getPackageIdentifier();
+ PackageFactory.getContext(env, location).getBuilder().getPackageIdentifier();
return packageId.getRepository().toString();
}
};
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 0222fd1b9d..702f6afb25 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
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.LabelValidator;
import com.google.devtools.build.lib.events.Event;
+import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.events.NullEventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.Package.NameConflictException;
@@ -326,8 +327,9 @@ public class WorkspaceFactory {
if (errorMessage != null) {
throw new EvalException(ast.getLocation(), errorMessage);
}
- PackageFactory.getContext(env, ast).pkgBuilder.setWorkspaceName(name);
- Package.Builder builder = PackageFactory.getContext(env, ast).pkgBuilder;
+ PackageFactory.getContext(env, ast.getLocation()).pkgBuilder.setWorkspaceName(name);
+ Package.Builder builder =
+ PackageFactory.getContext(env, ast.getLocation()).pkgBuilder;
RuleClass localRepositoryRuleClass = ruleFactory.getRuleClass("local_repository");
RuleClass bindRuleClass = ruleFactory.getRuleClass("bind");
Map<String, Object> kwargs =
@@ -365,7 +367,7 @@ public class WorkspaceFactory {
try {
nameLabel = Label.parseAbsolute("//external:" + name);
try {
- Package.Builder builder = PackageFactory.getContext(env, ast).pkgBuilder;
+ Package.Builder builder = PackageFactory.getContext(env, ast.getLocation()).pkgBuilder;
RuleClass ruleClass = ruleFactory.getRuleClass("bind");
WorkspaceFactoryHelper.addBindRule(
builder,
@@ -400,7 +402,7 @@ public class WorkspaceFactory {
generic1 = String.class,
doc = "The labels of the platforms to register."
),
- useAst = true,
+ useLocation = true,
useEnvironment = true
)
private static final BuiltinFunction.Factory newRegisterExecutionPlatformsFunction =
@@ -409,9 +411,9 @@ public class WorkspaceFactory {
return new BuiltinFunction(
"register_execution_platforms",
FunctionSignature.POSITIONALS,
- BuiltinFunction.USE_AST_ENV) {
+ BuiltinFunction.USE_LOC_ENV) {
public Object invoke(
- SkylarkList<String> platformLabels, FuncallExpression ast, Environment env)
+ SkylarkList<String> platformLabels, Location location, Environment env)
throws EvalException, InterruptedException {
// Collect the platform labels.
@@ -421,7 +423,7 @@ public class WorkspaceFactory {
platforms.add(Label.parseAbsolute(rawLabel));
} catch (LabelSyntaxException e) {
throw new EvalException(
- ast.getLocation(),
+ location,
String.format(
"In register_execution_platforms: unable to parse platform label %s: %s",
rawLabel, e.getMessage()),
@@ -430,7 +432,8 @@ public class WorkspaceFactory {
}
// Add to the package definition for later.
- Package.Builder builder = PackageFactory.getContext(env, ast).pkgBuilder;
+ Package.Builder builder =
+ PackageFactory.getContext(env, location).pkgBuilder;
builder.addRegisteredExecutionPlatformLabels(platforms);
return NONE;
@@ -453,16 +456,16 @@ public class WorkspaceFactory {
generic1 = String.class,
doc = "The labels of the toolchains to register."
),
- useAst = true,
+ useLocation = true,
useEnvironment = true
)
private static final BuiltinFunction.Factory newRegisterToolchainsFunction =
new BuiltinFunction.Factory("register_toolchains") {
public BuiltinFunction create(final RuleFactory ruleFactory) {
return new BuiltinFunction(
- "register_toolchains", FunctionSignature.POSITIONALS, BuiltinFunction.USE_AST_ENV) {
+ "register_toolchains", FunctionSignature.POSITIONALS, BuiltinFunction.USE_LOC_ENV) {
public Object invoke(
- SkylarkList<String> toolchainLabels, FuncallExpression ast, Environment env)
+ SkylarkList<String> toolchainLabels, Location location, Environment env)
throws EvalException, InterruptedException {
// Collect the toolchain labels.
@@ -473,7 +476,7 @@ public class WorkspaceFactory {
toolchains.add(Label.parseAbsolute(rawLabel));
} catch (LabelSyntaxException e) {
throw new EvalException(
- ast.getLocation(),
+ location,
String.format(
"In register_toolchains: unable to parse toolchain label %s: %s",
rawLabel, e.getMessage()),
@@ -482,7 +485,8 @@ public class WorkspaceFactory {
}
// Add to the package definition for later.
- Package.Builder builder = PackageFactory.getContext(env, ast).pkgBuilder;
+ Package.Builder builder =
+ PackageFactory.getContext(env, location).pkgBuilder;
builder.addRegisteredToolchainLabels(toolchains);
return NONE;
@@ -502,7 +506,7 @@ public class WorkspaceFactory {
public Object invoke(Map<String, Object> kwargs, FuncallExpression ast, Environment env)
throws EvalException, InterruptedException {
try {
- Package.Builder builder = PackageFactory.getContext(env, ast).pkgBuilder;
+ Package.Builder builder = PackageFactory.getContext(env, ast.getLocation()).pkgBuilder;
if (!allowOverride
&& kwargs.containsKey("name")
&& builder.targets.containsKey(kwargs.get("name"))) {