@Override
public void buildVersionSpecificBlockArgsAssignment(Node node, IRScope s, Operand argsArray, int argIndex, boolean isMasgnRoot, boolean isClosureArg, boolean isSplat) {
IRClosure cl = (IRClosure)s;
if (!cl.isForLoopBody())
throw new NotCompilableException("Should not have come here for block args assignment in 1.9 mode: " + node);
// Argh! For-loop bodies and regular iterators are different in terms of block-args!
switch (node.getNodeType()) {
case MULTIPLEASGN19NODE: {
ListNode sourceArray = ((MultipleAsgn19Node) node).getPre();
int i = 0;
for (Node an: sourceArray.childNodes()) {
// Use 1.8 mode version for this
buildBlockArgsAssignment(an, s, null, i, false, false, false);
i++;
}
break;
}
default:
throw new NotCompilableException("Can't build assignment node: " + node);
}
}