From 6c0cc67bb22435d3c8233777258fe917f72c842a Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 2 Mar 2005 03:21:31 +0000 Subject: * eval.c (rb_eval): [EXPERIMENTAL] NODE_LAMBDA implemented. [ruby-dev:25780] * node.h (NODE_LAMBDA): for literal Proc object. * parse.y (expr): interpret mere do...end block as proc object. * parse.y (primary): ditto, for brace block. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@8044 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 860ec0ab12..fae1ffce7d 100644 --- a/eval.c +++ b/eval.c @@ -2941,6 +2941,7 @@ rb_eval(self, n) case NODE_ITER: case NODE_FOR: + case NODE_LAMBDA: { PUSH_TAG(PROT_LOOP); PUSH_BLOCK(node->nd_var, node->nd_body); @@ -2952,6 +2953,10 @@ rb_eval(self, n) if (nd_type(node) == NODE_ITER) { result = rb_eval(self, node->nd_iter); } + else if (nd_type(node) == NODE_LAMBDA) { + ruby_iter->iter = ruby_frame->iter = ITER_CUR; + result = rb_block_proc(); + } else { VALUE recv; -- cgit v1.2.3