aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-29 13:22:45 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-01-29 13:22:45 +0000
commit21f6bb283f3eac8e723a23f0a7f78ffcfe574540 (patch)
treee39df52e08f50a32820c295963b89ae2f05e459b /parse.y
parent082445e7aff1fb6f04cf2c17b3c2582e64e096d3 (diff)
downloadruby-21f6bb283f3eac8e723a23f0a7f78ffcfe574540.tar.gz
parse.y: no optimization in defined?
* parse.y (logop_gen): no needs for optimization in defined? operator. literal conditions are optimized away eventually. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@49439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y4
1 files changed, 2 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index 41f26215d9..ddb261c8d3 100644
--- a/parse.y
+++ b/parse.y
@@ -9678,7 +9678,7 @@ logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *r
{
value_expr(left);
if (!left) {
- if (type == NODE_AND) return 0;
+ if (!in_defined && type == NODE_AND) return 0;
/* make NODE_OR not to be "void value expression" */
}
else if ((enum node_type)nd_type(left) == type) {
@@ -9689,7 +9689,7 @@ logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *r
node->nd_2nd = NEW_NODE(type, second, right, 0);
return left;
}
- else {
+ else if (!in_defined) {
switch (nd_type(left)) {
case NODE_NIL:
case NODE_FALSE: