Skip to content

Commit

Permalink
Showing 2 changed files with 7 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ public Object execute(VirtualFrame frame) {
toEnumNode = insert(DispatchHeadNodeFactory.createMethodCall(getContext()));
}

return toEnumNode.call(frame, RubyArguments.getSelf(frame.getArguments()), "to_enum", null, unshift(getContext().getSymbolTable().getSymbol(methodName), RubyArguments.extractUserArguments(frame.getArguments())));
return toEnumNode.call(frame, RubyArguments.getSelf(frame.getArguments()), "to_enum", null, RubyArguments.extractUserArgumentsWithUnshift(getContext().getSymbolTable().getSymbol(methodName), frame.getArguments()));

} else {

@@ -43,12 +43,4 @@ public Object execute(VirtualFrame frame) {
}
}

private static <T> T[] unshift(T first, T[] array) {
final int length = array.length;
final T[] result = Arrays.copyOf(array, length + 1);
System.arraycopy(array, 0, result, 1, length);
result[0] = first;
return result;
}

}
Original file line number Diff line number Diff line change
@@ -57,6 +57,12 @@ public static Object[] extractUserArguments(Object[] arguments) {
return ArrayUtils.extractRange(arguments, RUNTIME_ARGUMENT_COUNT, arguments.length);
}

public static Object[] extractUserArgumentsWithUnshift(Object first, Object[] arguments) {
final Object[] range = ArrayUtils.extractRange(arguments, BLOCK_INDEX, arguments.length);
range[0] = first;
return range;
}

public static Object[] concatUserArguments(Object o, Object[] arguments) {
final Object[] concatenatedArguments;

1 comment on commit ab90f79

@chrisseaton
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great

Please sign in to comment.