diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-02 03:21:31 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-03-02 03:21:31 +0000 |
commit | 6c0cc67bb22435d3c8233777258fe917f72c842a (patch) | |
tree | eb907e9d068f6f2c6002ab1b92cd78d3326674aa /eval.c | |
parent | eaf373d6026c20a7b6c5e263fc9f0e8ca81d3b8c (diff) | |
download | ruby-6c0cc67bb22435d3c8233777258fe917f72c842a.tar.gz |
* 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
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -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; |