summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-03-09 07:57:00 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1998-03-09 07:57:00 +0000
commit2b6ab941234426b8891f1bad036fd75611038312 (patch)
tree22ae6172fcc75cb8073529cb7f2719b11f0cf036 /parse.y
parent6a3fdf70f18a7b67808f23ddbd28e9631f7f905a (diff)
1.1b9_00
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/v1_1r@109 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y8
1 files changed, 8 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 3c4a8fc3a3..47c610a7ed 100644
--- a/parse.y
+++ b/parse.y
@@ -3649,6 +3649,14 @@ logop(type, left, right)
{
value_expr(left);
+ switch (nd_type(left)) {
+ case NODE_NIL: /* always false */
+ case NODE_FALSE:
+ return type == NODE_OR ? right : left;
+ case NODE_LIT: /* always true */
+ return type == NODE_AND ? right : left;
+ }
+
return node_newnode(type, cond(left), cond(right));
}