aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2017-02-20 14:04:57 +0000
committerGravatar Irina Iancu <elenairina@google.com>2017-02-20 15:34:45 +0000
commit54b9d2c3d514c7023948930a86db88178309149a (patch)
treeb0ae8c5bf41b8b04795ec791b840927fb6a02cc1 /src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
parente86550a5e82f28360cf49ec42318c52973dac93b (diff)
Raise error in function calls when star argument is not iterable
This was a bug, f(*4) was silently handled as f(). -- PiperOrigin-RevId: 148017021 MOS_MIGRATED_REVID=148017021
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.java7
1 files changed, 5 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 f6082d9227..c301061dc3 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
@@ -675,9 +675,12 @@ public final class FuncallExpression extends Expression {
if (arg.isPositional()) {
posargs.add(value);
} else if (arg.isStar()) { // expand the starArg
- if (value instanceof Iterable) {
- posargs.addAll((Iterable<Object>) value);
+ if (!(value instanceof Iterable)) {
+ throw new EvalException(
+ getLocation(),
+ "argument after * must be an iterable, not " + EvalUtils.getDataTypeName(value));
}
+ posargs.addAll((Iterable<Object>) value);
} else if (arg.isStarStar()) { // expand the kwargs
addKeywordArgs(kwargs, value, duplicates, getLocation());
} else {