ruby-changes:1830
From: ko1@a...
Date: 31 Aug 2007 03:49:12 +0900
Subject: [ruby-changes:1830] nobu - Ruby:r13321 (trunk): * parse.y (assignable_gen): ignore already erred names.
nobu 2007-08-31 03:49:00 +0900 (Fri, 31 Aug 2007) New Revision: 13321 Modified files: trunk/ChangeLog trunk/bootstraptest/test_knownbug.rb trunk/bootstraptest/test_massign.rb trunk/parse.y trunk/version.h Log: * parse.y (assignable_gen): ignore already erred names. * parse.y (shadowing_lvar_gen): always make new block local variable when shadowing outer local variable. [ruby-dev:31507] http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=13321&r2=13320 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?r1=13321&r2=13320 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13321&r2=13320 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_massign.rb?r1=13321&r2=13320 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_knownbug.rb?r1=13321&r2=13320 Index: ChangeLog =================================================================== --- ChangeLog (revision 13320) +++ ChangeLog (revision 13321) @@ -1,3 +1,10 @@ +Fri Aug 31 03:48:58 2007 Nobuyoshi Nakada <nobu@r...> + + * parse.y (assignable_gen): ignore already erred names. + + * parse.y (shadowing_lvar_gen): always make new block local variable + when shadowing outer local variable. [ruby-dev:31507] + Thu Aug 30 19:40:33 2007 NAKAMURA Usaku <usa@r...> * regenc.h: check RUBY_EXTERN before including config.h and defines.h Index: bootstraptest/test_massign.rb =================================================================== --- bootstraptest/test_massign.rb (revision 13320) +++ bootstraptest/test_massign.rb (revision 13321) @@ -13,6 +13,12 @@ ans } +assert_equal 'ok', %q{ + r = :ok + :ng.tap {|(r)|} + r +}, '[ruby-dev:31507]' + =begin # generated by this script: Index: bootstraptest/test_knownbug.rb =================================================================== --- bootstraptest/test_knownbug.rb (revision 13320) +++ bootstraptest/test_knownbug.rb (revision 13321) @@ -3,17 +3,8 @@ # So all tests will cause failure. # -# massign +# catch/throw assert_equal 'ok', %q{ - def m() - yield :ng - end - r = :ok - m {|(r)|} - r -}, '[ruby-dev:31507]' - -assert_equal 'ok', %q{ begin catch {|t| throw t, :ok } rescue ArgumentError Index: parse.y =================================================================== --- parse.y (revision 13320) +++ parse.y (revision 13321) @@ -1023,7 +1023,7 @@ | primary_value '[' opt_call_args rbracket tOP_ASGN command_call { /*%%%*/ - NODE *args = $3; + NODE *args; value_expr($6); if (!$3) $3 = NEW_ZARRAY(); @@ -6677,7 +6677,7 @@ tokadd(c); c = nextc(); if (parser_is_identchar()) { - tokadd(c); + tokadd(c); } else { pushback(c); @@ -7253,6 +7253,7 @@ static NODE* assignable_gen(struct parser_params *parser, ID id, NODE *val) { + if (!id) return 0; if (id == keyword_self) { yyerror("Can't change the value of self"); } @@ -7321,6 +7322,7 @@ } else if (dvar_defined(name) || local_id(name)) { rb_warningS("shadowing outer local variable - %s", rb_id2name(name)); + vtable_add(lvtbl->vars, name); } } else { Index: version.h =================================================================== --- version.h (revision 13320) +++ version.h (revision 13321) @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-08-30" +#define RUBY_RELEASE_DATE "2007-08-31" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20070830 +#define RUBY_RELEASE_CODE 20070831 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 8 -#define RUBY_RELEASE_DAY 30 +#define RUBY_RELEASE_DAY 31 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[]; -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml