mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
resolve conflict; ref #3283
This commit is contained in:
@@ -772,6 +772,8 @@ attrsym(codegen_scope *s, mrb_sym a)
|
||||
return mrb_intern(s->mrb, name2, len+1);
|
||||
}
|
||||
|
||||
#define CALL_MAXARGS 127
|
||||
|
||||
static int
|
||||
gen_values(codegen_scope *s, node *t, int val)
|
||||
{
|
||||
@@ -780,7 +782,9 @@ gen_values(codegen_scope *s, node *t, int val)
|
||||
|
||||
while (t) {
|
||||
is_splat = (intptr_t)t->car->car == NODE_SPLAT; /* splat mode */
|
||||
if (n >= 127 || is_splat) {
|
||||
if (
|
||||
n >= CALL_MAXARGS - 1 /* need to subtract one because vm.c expects an array if n == CALL_MAXARGS */
|
||||
|| is_splat) {
|
||||
if (val) {
|
||||
if (is_splat && n == 0 && (intptr_t)t->car->cdr->car == NODE_ARRAY) {
|
||||
codegen(s, t->car->cdr, VAL);
|
||||
@@ -831,8 +835,6 @@ gen_values(codegen_scope *s, node *t, int val)
|
||||
return n;
|
||||
}
|
||||
|
||||
#define CALL_MAXARGS 127
|
||||
|
||||
static void
|
||||
gen_call(codegen_scope *s, node *tree, mrb_sym name, int sp, int val, int safe)
|
||||
{
|
||||
|
||||
@@ -31,3 +31,18 @@ assert('codegen absorbs arguments to redo and retry if they are the argument of
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assert('method call with exactly 127 arguments') do
|
||||
def args_to_ary(*args)
|
||||
args
|
||||
end
|
||||
|
||||
assert_equal [0]*127, args_to_ary(
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
|
||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user