From 8581164ea67a13fad5e7d56aa4aa75a87f9eafb3 Mon Sep 17 00:00:00 2001 From: matz Date: Sat, 2 Sep 2006 14:36:22 +0000 Subject: * eval.c (rb_eval): should handle when in else clause. a patch from Eric Hodel . [ruby-core:08662] * parse.y (primary): wrap with NODE_CASE. [ruby-core:08663] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10832 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index c24728da47..bd85e331f2 100644 --- a/eval.c +++ b/eval.c @@ -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) { -- cgit v1.2.3