[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]