diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-27 22:28:29 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-27 22:28:29 +0100 |
| commit | 5f852c33a8a57bd8fad58747b339961ac6c835ef (patch) | |
| tree | c709a1ec6f1214fca9338053ff65dd79d3ce3008 /src/main | |
| parent | 6aed29ed46535506b27aee8121ca56116356a2d9 (diff) | |
Support passing arrays as vararg argument
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java index fcce1e1..e6b3822 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java @@ -317,7 +317,11 @@ public class JavaExpressionReader { ITypeBinding[] parameterTypes = method.getParameterTypes(); return IntStream.range(0, parameterTypes.length) .mapToObj(index -> { - if (method.isVarargs() && index == parameterTypes.length - 1) { + boolean isVarargs = + method.isVarargs() && + index == parameterTypes.length - 1 && + (javaArguments.size() != parameterTypes.length || !javaArguments.get(index).resolveTypeBinding().isEqualTo(parameterTypes[index])); + if (isVarargs) { Type elementType = typeOf(parameterTypes[index].getElementType()); List<ExpressionNode> elements = IntStream.range(index, javaArguments.size()) .mapToObj(argumentIndex -> readExpression(elementType, javaArguments.get(argumentIndex))) |
