diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-02 14:36:22 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-02 14:36:22 +0000 |
commit | cf4b4b4ed9283d87497b661fc1ac5172db6030c4 (patch) | |
tree | 3de0c26d6ca8959d5d17fc5bfe29ae864f4027a8 /eval.c | |
parent | 9e15823543b0fbfcdd0706fee9352b32fa355fd3 (diff) | |
download | ruby-cf4b4b4ed9283d87497b661fc1ac5172db6030c4.tar.gz ruby-cf4b4b4ed9283d87497b661fc1ac5172db6030c4.tar.xz ruby-cf4b4b4ed9283d87497b661fc1ac5172db6030c4.zip |
* eval.c (rb_eval): should handle when in else clause. a patch
from Eric Hodel <drbrain at segment7.net>. [ruby-core:08662]
* parse.y (primary): wrap with NODE_CASE. [ruby-core:08663]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 19 |
1 files changed, 3 insertions, 16 deletions
@@ -2861,25 +2861,12 @@ rb_eval(VALUE self, NODE *n) } goto again; - case NODE_WHEN: - while (node) { - if (nd_type(node) != NODE_WHEN) goto again; - EXEC_EVENT_HOOK(RUBY_EVENT_LINE, node->nd_head, self, - ruby_frame->this_func, - ruby_frame->this_class); - if (when_check(node->nd_head, Qundef, self)) { - node = node->nd_body; - goto again; - } - node = node->nd_next; - } - RETURN(Qnil); - case NODE_CASE: { - VALUE val; + VALUE val = Qundef; - val = rb_eval(self, node->nd_head); + if (node->nd_head) + val = rb_eval(self, node->nd_head); node = node->nd_body; while (node) { if (nd_type(node) != NODE_WHEN) { |