aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-27 22:28:29 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-27 22:28:29 +0100
commit5f852c33a8a57bd8fad58747b339961ac6c835ef (patch)
treec709a1ec6f1214fca9338053ff65dd79d3ce3008 /src/main/java/org/zwobble
parent6aed29ed46535506b27aee8121ca56116356a2d9 (diff)
Support passing arrays as vararg argument
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaExpressionReader.java6
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)))