diff options
Diffstat (limited to 'src/main/java')
2 files changed, 12 insertions, 1 deletions
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 4bf9999f50..327c73697c 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 @@ -950,7 +950,8 @@ public class SkylarkActionFactory implements SkylarkValue { noneable = true, doc = "The passed objects are passed through a map function. " - + "For vector args the function is given a list and is expected to return a list." + + "For vector args the function is given a list and is expected to " + + "return a list of the same length as the input." ) }, useLocation = true diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java index e67ff39f09..c9e5a7ddf9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java @@ -144,6 +144,16 @@ class SkylarkCustomCommandLine extends CommandLine { null)); } List resultAsList = (List) result; + if (resultAsList.size() != count) { + throw new CommandLineExpansionException( + errorMessage( + String.format( + "map_fn must return a list of the same length as the input. " + + "Found list of length %d, expected %d.", + resultAsList.size(), count), + location, + null)); + } mutatedValues.clear(); mutatedValues.addAll(resultAsList); } |