Actions
Bug #13090
closedCannot use return statement in lambdas using instance_eval (MRI 2.4)
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
Description
Hello,
I'm pretty sure I've found a bug after running specs for dry-initializer gem on MRI 2.4.
I managed to find the minimal code to reproduce the issue:
MRI 2.3.3
$ ruby -e "instance_eval(&lambda { |_| return })"
$
MRI 2.4.0-p0
$ ruby -e "instance_eval(&lambda { |_| return })"
-e:1:in `block in <main>': unexpected return (LocalJumpError)
from -e:1:in `instance_eval'
from -e:1:in `<main>'
I think lambda has been converted to an ordinary proc, but I didn't check it.
Best regards,
Nikita
Updated by nobu (Nobuyoshi Nakada) almost 8 years ago
- Related to Feature #12628: change block/env structs added
Updated by nobu (Nobuyoshi Nakada) almost 8 years ago
- Backport changed from 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED
- Description updated (diff)
Updated by nobu (Nobuyoshi Nakada) almost 8 years ago
- Status changed from Open to Closed
Applied in changeset r57240.
vm.c: fix return in lambda
-
vm.c (invoke_block_from_c_splattable): pass lambda-ness.
-
vm_eval.c (yield_under): invoke lambda proc properly.
[ruby-core:78917] [Bug #13090]
Updated by naruse (Yui NARUSE) almost 8 years ago
- Backport changed from 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE
ruby_2_4 r57847 merged revision(s) 57240.
Actions
Like0
Like0Like0Like0Like0