ruby-changes:19469
From: yugui <ko1@a...>
Date: Thu, 12 May 2011 06:25:59 +0900 (JST)
Subject: [ruby-changes:19469] Ruby:r31510 (ruby_1_9_2): merges r30805 and r30809 from trunk into ruby_1_9_2. fixes #4365
yugui 2011-05-12 06:23:24 +0900 (Thu, 12 May 2011) New Revision: 31510 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=31510 Log: merges r30805 and r30809 from trunk into ruby_1_9_2. fixes #4365 -- * parse.y (words, qwords): dispatch array events. based on a patch from Michael Edgar. [Bug #4365]. Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/parse.y branches/ruby_1_9_2/test/ripper/dummyparser.rb branches/ruby_1_9_2/test/ripper/test_parser_events.rb branches/ruby_1_9_2/version.h Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 31509) +++ ruby_1_9_2/ChangeLog (revision 31510) @@ -1,3 +1,8 @@ +Sun Feb 6 12:18:25 2011 Nobuyoshi Nakada <nobu@r...> + + * parse.y (words, qwords): dispatch array events. based on a + patch from Michael Edgar. [Bug #4365]. + Sat Feb 5 21:47:09 2011 Nobuyoshi Nakada <nobu@r...> * parse.y (mlhs_basic): include mlhs_post for ripper. a patch Index: ruby_1_9_2/parse.y =================================================================== --- ruby_1_9_2/parse.y (revision 31509) +++ ruby_1_9_2/parse.y (revision 31510) @@ -3938,11 +3938,16 @@ $$ = NEW_ZARRAY(); /*% $$ = dispatch0(words_new); + $$ = dispatch1(array, $$); %*/ } | tWORDS_BEG word_list tSTRING_END { + /*%%%*/ $$ = $2; + /*% + $$ = dispatch1(array, $2); + %*/ } ; @@ -3988,11 +3993,16 @@ $$ = NEW_ZARRAY(); /*% $$ = dispatch0(qwords_new); + $$ = dispatch1(array, $$); %*/ } | tQWORDS_BEG qword_list tSTRING_END { + /*%%%*/ $$ = $2; + /*% + $$ = dispatch1(array, $2); + %*/ } ; Index: ruby_1_9_2/version.h =================================================================== --- ruby_1_9_2/version.h (revision 31509) +++ ruby_1_9_2/version.h (revision 31510) @@ -1,5 +1,5 @@ #define RUBY_VERSION "1.9.2" -#define RUBY_PATCHLEVEL 194 +#define RUBY_PATCHLEVEL 195 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 9 #define RUBY_VERSION_TEENY 1 Index: ruby_1_9_2/test/ripper/test_parser_events.rb =================================================================== --- ruby_1_9_2/test/ripper/test_parser_events.rb (revision 31509) +++ ruby_1_9_2/test/ripper/test_parser_events.rb (revision 31510) @@ -160,6 +160,8 @@ def test_array # array literal assert_equal '[array([1,2,3])]', parse('[1,2,3]') + assert_equal '[array([abc,def])]', parse('%w[abc def]') + assert_equal '[array([abc,def])]', parse('%W[abc def]') end def test_assign # generic assignment Index: ruby_1_9_2/test/ripper/dummyparser.rb =================================================================== --- ruby_1_9_2/test/ripper/dummyparser.rb (revision 31509) +++ ruby_1_9_2/test/ripper/dummyparser.rb (revision 31510) @@ -130,44 +130,44 @@ on_args_add_block(m.children, b) m end - + def on_paren(params) params end - + def on_brace_block(params, code) Node.new('block', params, code) end - + def on_block_var(params, shadow) params end - + def on_rest_param(var) "*#{var}" end - + def on_blockarg(var) "&#{var}" end - + def on_params(required, optional, rest, more, block) args = NodeList.new - + required.each do |req| args.push(req) end if required - + optional.each do |var, val| args.push("#{var}=#{val}") end if optional - + args.push(rest) if rest - + more.each do |m| args.push(m) end if more - + args.push(block) if block args end @@ -184,6 +184,30 @@ Node.new('assocs', *a) end + def on_word_new + "" + end + + def on_word_add(word, w) + word << w + end + + def on_words_new + NodeList.new + end + + def on_words_add(words, word) + words.push word + end + + def on_qwords_new + NodeList.new + end + + def on_qwords_add(words, word) + words.push word + end + (Ripper::PARSER_EVENTS.map(&:to_s) - instance_methods(false).map {|n|n.to_s.sub(/^on_/, '')}).each do |event| define_method(:"on_#{event}") do |*args| Node.new(event, *args) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/