* 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
This commit is contained in:
matz 2007-07-23 09:13:44 +00:00
parent 3c5510565b
commit 46eb6e9428
3 changed files with 16 additions and 6 deletions

View File

@ -125,6 +125,11 @@ Fri Jul 20 09:50:40 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* bootstraptest/runner.rb (cleanup_coredump, check_coredump): see * bootstraptest/runner.rb (cleanup_coredump, check_coredump): see
stackdump file too. stackdump file too.
Thu Jul 19 20:39:30 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (value_expr_gen): warn for empty expression ().
[ruby-dev:31252]
Thu Jul 19 19:24:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> Thu Jul 19 19:24:14 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* eval_error.ci (get_backtrace): check the result more. * eval_error.ci (get_backtrace): check the result more.

11
parse.y
View File

@ -1158,6 +1158,7 @@ expr_value : expr
/*%%%*/ /*%%%*/
value_expr($1); value_expr($1);
$$ = $1; $$ = $1;
if (!$$) $$ = NEW_NIL();
/*% /*%
$$ = $1; $$ = $1;
%*/ %*/
@ -1772,7 +1773,6 @@ arg : lhs '=' arg
| var_lhs tOP_ASGN arg | var_lhs tOP_ASGN arg
{ {
/*%%%*/ /*%%%*/
value_expr($3);
if ($1) { if ($1) {
ID vid = $1->nd_vid; ID vid = $1->nd_vid;
if ($2 == tOROP) { if ($2 == tOROP) {
@ -2206,6 +2206,7 @@ arg_value : arg
/*%%%*/ /*%%%*/
value_expr($1); value_expr($1);
$$ = $1; $$ = $1;
if (!$$) $$ = NEW_NIL();
/*% /*%
$$ = $1; $$ = $1;
%*/ %*/
@ -2929,6 +2930,7 @@ primary_value : primary
/*%%%*/ /*%%%*/
value_expr($1); value_expr($1);
$$ = $1; $$ = $1;
if (!$$) $$ = NEW_NIL();
/*% /*%
$$ = $1; $$ = $1;
%*/ %*/
@ -4299,8 +4301,9 @@ opt_f_block_arg : ',' f_block_arg
singleton : var_ref singleton : var_ref
{ {
/*%%%*/ /*%%%*/
$$ = $1;
value_expr($1); value_expr($1);
$$ = $1;
if (!$$) $$ = NEW_NIL();
/*% /*%
$$ = $1; $$ = $1;
%*/ %*/
@ -7228,7 +7231,6 @@ gettable_gen(struct parser_params *parser, ID id)
static NODE* static NODE*
assignable_gen(struct parser_params *parser, ID id, NODE *val) assignable_gen(struct parser_params *parser, ID id, NODE *val)
{ {
value_expr(val);
if (id == keyword_self) { if (id == keyword_self) {
yyerror("Can't change the value of 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; int cond = 0;
if (!node) {
rb_warning0("empty expression");
}
while (node) { while (node) {
switch (nd_type(node)) { switch (nd_type(node)) {
case NODE_DEFN: case NODE_DEFN:

View File

@ -1,7 +1,7 @@
#define RUBY_VERSION "1.9.0" #define RUBY_VERSION "1.9.0"
#define RUBY_RELEASE_DATE "2007-07-22" #define RUBY_RELEASE_DATE "2007-07-23"
#define RUBY_VERSION_CODE 190 #define RUBY_VERSION_CODE 190
#define RUBY_RELEASE_CODE 20070722 #define RUBY_RELEASE_CODE 20070723
#define RUBY_PATCHLEVEL 0 #define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 0 #define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 7 #define RUBY_RELEASE_MONTH 7
#define RUBY_RELEASE_DAY 22 #define RUBY_RELEASE_DAY 23
#ifdef RUBY_EXTERN #ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_version[];