aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-04-11 11:09:17 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-11 11:11:22 -0700
commit4baafaca73cee2d3237999048acfc0d5f5f59a5b (patch)
treef67e4fa76f74c9458c579f4bec0e09d892cbb7da /src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
parent51ae67a626aae45163175a1eee518b9e96e33fbc (diff)
Introduce Param.legacyNamed() to handle migration from @SkylarkSignature to @SkylarkCallable.
@SkylarkSignature.parameters() treat named()=true for parameters regardless of whether named() was actually set to true, and thus for ease of migration we mark migrated parameters as legacyNamed() = true, which is currently semantically equivalent to named() = true. We make a distinction so that it's easier to bulk fix these later. RELNOTES: None. PiperOrigin-RevId: 192477405
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
index c9f3aee01d..e19113c93f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
@@ -484,6 +484,10 @@ public final class FuncallExpression extends Expression {
return result;
}
+ private static boolean isParamNamed(Param param) {
+ return param.named() || param.legacyNamed();
+ }
+
/**
* Constructs the parameters list to actually pass to the method, filling with default values if
* any. If there is a type or argument mismatch, returns a result containing an error message.
@@ -557,13 +561,14 @@ public final class FuncallExpression extends Expression {
"expected value of type '%s' for parameter '%s'",
type.toString(), param.name()));
}
- if (param.named() && keys.contains(param.name())) {
+ if (isParamNamed(param) && keys.contains(param.name())) {
return ArgumentListConversionResult.fromError(
String.format("got multiple values for keyword argument '%s'", param.name()));
}
argIndex++;
} else { // No more positional arguments, or no more positional parameters.
- if (param.named() && keys.remove(param.name())) { // Param specified by keyword argument.
+ if (isParamNamed(param) && keys.remove(param.name())) {
+ // Param specified by keyword argument.
value = kwargs.get(param.name());
if (!type.contains(value)) {
return ArgumentListConversionResult.fromError(