diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 14:04:09 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-08-25 14:04:09 +0000 |
commit | 9839d737c25e1a787bc8c45774cbb235dedc8507 (patch) | |
tree | 6b93f07f92bd8334bec228d42cae6c8741711314 /compile.c | |
parent | bc3c17850915d840f136189bd3ace5d5369dde2d (diff) | |
download | ruby-9839d737c25e1a787bc8c45774cbb235dedc8507.tar.gz |
* compile.c (defined_expr): default defined? should return
"expression" without evaluating the expression. [ruby-dev:35967]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18839 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 28 |
1 files changed, 1 insertions, 27 deletions
@@ -2336,6 +2336,7 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret, case NODE_ZARRAY: case NODE_AND: case NODE_OR: + default: estr = "expression"; break; @@ -2478,33 +2479,6 @@ defined_expr(rb_iseq_t *iseq, LINK_ANCHOR *ret, case NODE_CVASGN: estr = "assignment"; break; - - default:{ - LABEL *lstart = NEW_LABEL(nd_line(node)); - LABEL *lend = NEW_LABEL(nd_line(node)); - VALUE ensure = NEW_CHILD_ISEQVAL(NEW_NIL(), - rb_str_concat(rb_str_new2 - ("defined guard in "), - iseq->name), - ISEQ_TYPE_DEFINED_GUARD); - - ADD_LABEL(ret, lstart); - COMPILE(ret, "defined expr (others)", node); - if (!lfinish[1]) { - lfinish[1] = NEW_LABEL(nd_line(node)); - } - ADD_INSNL(ret, nd_line(node), branchunless, lfinish[1]); - if (needstr) { - ADD_INSN1(ret, nd_line(node), putstring, rb_str_new2("expression")); - } - else { - ADD_INSN1(ret, nd_line(node), putobject, Qtrue); - } - ADD_LABEL(ret, lend); - - ADD_CATCH_ENTRY(CATCH_TYPE_RESCUE, lstart, lend, ensure, lfinish[1]); - return 1; - } /* end of default */ } if (estr != 0) { |