diff options
author | Alan Wu <XrXr@users.noreply.github.com> | 2019-12-30 17:47:58 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-30 17:47:58 -0500 |
commit | 99c7b0b7ea789643bef60085ab59e4b62011ef8b (patch) | |
tree | 1ebd08d7cea926d6b8faf40f1114a76d8e399613 /proc.c | |
parent | 3e2418e2a64cadeb59e02d13b424b62b8d867ad5 (diff) |
Decide lambdaness of (f << g) using g (#2729)
* Deciding lambdaness of (f << g) using g
* Use version guards for spec changes
Notes
Notes:
Merged-By: XrXr
Diffstat (limited to 'proc.c')
-rw-r--r-- | proc.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -3386,8 +3386,14 @@ rb_proc_compose_to_left(VALUE self, VALUE g) procs[1] = g; args = rb_ary_tmp_new_from_values(0, 2, procs); - GetProcPtr(self, procp); - is_lambda = procp->is_lambda; + if (rb_obj_is_proc(g)) { + GetProcPtr(g, procp); + is_lambda = procp->is_lambda; + } + else { + VM_ASSERT(rb_obj_is_method(g) || rb_obj_respond_to(g, idCall, TRUE)); + is_lambda = 1; + } proc = rb_proc_new(compose, args); GetProcPtr(proc, procp); |