[#18440] racc segv revisited — "Akinori MUSHA" <knu@...>

 次のバグの件なんですが、現時点では原因究明を含めて未解決という

24 messages 2002/10/02
[#18617] Re: racc segv revisited — "Akinori MUSHA" <knu@...> 2002/11/02

At Wed, 2 Oct 2002 23:19:59 +0900,

[ruby-dev:18534] void value expression in conditional

From: nobu.nakada@...
Date: 2002-10-18 13:44:23 UTC
List: ruby-dev #18534
なかだです。

$ ruby -v -e 'proc {x = (f() or next)}'
ruby 1.7.3 (2002-10-17) [i686-linux]
-e:1: void value expression

論理式の右辺では、breakやnextは有効にしてもいいような気がします。


Index: parse.y
===================================================================
RCS file: /cvs/ruby/src/ruby/parse.y,v
retrieving revision 1.222
diff -u -2 -p -r1.222 parse.y
--- parse.y	17 Oct 2002 07:26:59 -0000	1.222
+++ parse.y	18 Oct 2002 13:04:42 -0000
@@ -4701,4 +4701,6 @@ node_assign(lhs, rhs)
     NODE *node;
 {
+    int cond = 0;
+
     while (node) {
 	switch (nd_type(node)) {
@@ -4715,5 +4717,5 @@ value_expr(node)
 	  case NODE_REDO:
 	  case NODE_RETRY:
-	    yyerror("void value expression");
+	    if (!cond) yyerror("void value expression");
 	    /* or "control never reach"? */
 	    return Qfalse;
@@ -4737,4 +4739,5 @@ value_expr(node)
 	  case NODE_AND:
 	  case NODE_OR:
+	    cond = 1;
 	    node = node->nd_2nd;
 	    break;


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread

Prev Next