aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-23 09:13:44 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-07-23 09:13:44 +0000
commit46eb6e9428918e78e852562a6926adc76f81ed97 (patch)
tree540eb269108ceda0eb4c55d94c8c714e175c5e90 /parse.y
parent3c5510565b4070ced940a29b90c79a1abe36a792 (diff)
downloadruby-46eb6e9428918e78e852562a6926adc76f81ed97.tar.gz
* parse.y (value_expr_gen): warn for empty expression ().
[ruby-dev:31252] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12840 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y11
1 files changed, 8 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index f60fd6df7b..7457b9c85e 100644
--- a/parse.y
+++ b/parse.y
@@ -1158,6 +1158,7 @@ expr_value : expr
/*%%%*/
value_expr($1);
$$ = $1;
+ if (!$$) $$ = NEW_NIL();
/*%
$$ = $1;
%*/
@@ -1772,7 +1773,6 @@ arg : lhs '=' arg
| var_lhs tOP_ASGN arg
{
/*%%%*/
- value_expr($3);
if ($1) {
ID vid = $1->nd_vid;
if ($2 == tOROP) {
@@ -2206,6 +2206,7 @@ arg_value : arg
/*%%%*/
value_expr($1);
$$ = $1;
+ if (!$$) $$ = NEW_NIL();
/*%
$$ = $1;
%*/
@@ -2929,6 +2930,7 @@ primary_value : primary
/*%%%*/
value_expr($1);
$$ = $1;
+ if (!$$) $$ = NEW_NIL();
/*%
$$ = $1;
%*/
@@ -4299,8 +4301,9 @@ opt_f_block_arg : ',' f_block_arg
singleton : var_ref
{
/*%%%*/
- $$ = $1;
value_expr($1);
+ $$ = $1;
+ if (!$$) $$ = NEW_NIL();
/*%
$$ = $1;
%*/
@@ -7228,7 +7231,6 @@ gettable_gen(struct parser_params *parser, ID id)
static NODE*
assignable_gen(struct parser_params *parser, ID id, NODE *val)
{
- value_expr(val);
if (id == keyword_self) {
yyerror("Can't change the value of self");
}
@@ -7447,6 +7449,9 @@ value_expr_gen(struct parser_params *parser, NODE *node)
{
int cond = 0;
+ if (!node) {
+ rb_warning0("empty expression");
+ }
while (node) {
switch (nd_type(node)) {
case NODE_DEFN: