aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
diff options
context:
space:
mode:
authorGravatar dslomov <dslomov@google.com>2017-07-03 07:15:31 -0400
committerGravatar John Cater <jcater@google.com>2017-07-05 10:56:31 -0400
commit40ddec31e4e45e69968f1b12af446342cb38f28a (patch)
tree94f1a88e4f31fa4bb302b0af47f431876eec5bfb /src/main/java/com/google/devtools/build/lib/syntax/FuncallExpression.java
parent71d1bbefcaa34c697db4166b7ba01970c15206a9 (diff)
Migrate tests to ctx.actions.run/run_shell.
RELNOTES: None. PiperOrigin-RevId: 160817326
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.java13
1 files changed, 10 insertions, 3 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 682b15f629..6caf43fc2f 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
@@ -21,6 +21,7 @@ import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkinterface.Param;
@@ -39,8 +40,8 @@ import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -462,7 +463,7 @@ public final class FuncallExpression extends Expression {
}
// Then the parameters specified in callable.parameters()
- Set<String> keys = new HashSet<>(kwargs.keySet());
+ Set<String> keys = new LinkedHashSet<>(kwargs.keySet());
for (Param param : callable.parameters()) {
SkylarkType type = getType(param);
if (param.noneable()) {
@@ -502,9 +503,15 @@ public final class FuncallExpression extends Expression {
String.format("parameter '%s' cannot be None", param.name()));
}
}
- if (i < args.size() || !keys.isEmpty()) {
+ if (i < args.size()) {
return ArgumentListConversionResult.fromError("too many arguments");
}
+ if (!keys.isEmpty()) {
+ return ArgumentListConversionResult.fromError(
+ String.format("unexpected keyword%s %s",
+ keys.size() > 1 ? "s" : "",
+ Joiner.on(",").join(Iterables.transform(keys, s -> "'" + s + "'"))));
+ }
return ArgumentListConversionResult.fromArgumentList(builder.build());
}