[前][次][番号順一覧][スレッド一覧]

ruby-changes:7320

From: matz <ko1@a...>
Date: Mon, 25 Aug 2008 23:04:26 +0900 (JST)
Subject: [ruby-changes:7320] Ruby:r18839 (trunk): * compile.c (defined_expr): default defined? should return

matz	2008-08-25 23:04:09 +0900 (Mon, 25 Aug 2008)

  New Revision: 18839

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=18839

  Log:
    * compile.c (defined_expr): default defined? should return
      "expression" without evaluating the expression.  [ruby-dev:35967]

  Modified files:
    trunk/ChangeLog
    trunk/compile.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 18838)
+++ ChangeLog	(revision 18839)
@@ -1,3 +1,8 @@
+Mon Aug 25 23:01:17 2008  Yukihiro Matsumoto  <matz@r...>
+
+	* compile.c (defined_expr): default defined? should return
+	  "expression" without evaluating the expression.  [ruby-dev:35967] 
+
 Mon Aug 25 22:46:01 2008  Yusuke Endoh  <mame@t...>
 
 	* test/ruby/test_thread.rb (test_status_and_stop_p): reduce the risk
Index: compile.c
===================================================================
--- compile.c	(revision 18838)
+++ compile.c	(revision 18839)
@@ -2336,6 +2336,7 @@
       case NODE_ZARRAY:
       case NODE_AND:
       case NODE_OR:
+      default:
 	estr = "expression";
 	break;
 
@@ -2478,33 +2479,6 @@
       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) {

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]