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 | bc543f0a1c4d1d7377a4cecaad62a70785f50f00 (patch) | |
tree | eb907e9d068f6f2c6002ab1b92cd78d3326674aa /eval.c | |
parent | 77fa77bb04c6ca7fb6ac8fd0e36f152a2ab562fb (diff) | |
download | ruby-bc543f0a1c4d1d7377a4cecaad62a70785f50f00.tar.gz ruby-bc543f0a1c4d1d7377a4cecaad62a70785f50f00.tar.xz ruby-bc543f0a1c4d1d7377a4cecaad62a70785f50f00.zip |
* 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: http://svn.ruby-lang.org/repos/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; |