Support passing inline class values with spread operator

This commit is contained in:
Mikhail Zarechenskiy
2018-02-12 06:21:39 +03:00
parent 3919dc94e1
commit e017e9cb5f
8 changed files with 71 additions and 2 deletions
@@ -2808,12 +2808,14 @@ public class ExpressionCodegen extends KtVisitor<StackValue, StackValue> impleme
for (int i = 0; i != size; ++i) {
v.dup();
ValueArgument argument = arguments.get(i);
KtExpression argumentExpression = argument.getArgumentExpression();
KotlinType argumentKotlinType = kotlinType(argumentExpression);
if (argument.getSpreadElement() != null) {
gen(argument.getArgumentExpression(), OBJECT_TYPE);
gen(argumentExpression, OBJECT_TYPE, argumentKotlinType);
v.invokevirtual(owner, "addSpread", "(Ljava/lang/Object;)V", false);
}
else {
gen(argument.getArgumentExpression(), elementType);
gen(argumentExpression, elementType, argumentKotlinType);
v.invokevirtual(owner, "add", addDescriptor, false);
}
}