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

ruby-changes:41339

From: nobu <ko1@a...>
Date: Sat, 2 Jan 2016 14:44:38 +0900 (JST)
Subject: [ruby-changes:41339] nobu:r53411 (trunk): parse.y: use nd_tag

nobu	2016-01-02 14:44:41 +0900 (Sat, 02 Jan 2016)

  New Revision: 53411

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53411

  Log:
    parse.y: use nd_tag
    
    * parse.y (regexp): set_yylval_num sets u1, should use nd_tag
      instead of nd_state.  [ruby-core:72638] [Bug #11932]

  Modified files:
    trunk/ChangeLog
    trunk/parse.y
    trunk/test/ripper/test_files.rb
    trunk/test/ripper/test_ripper.rb
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 53410)
+++ ChangeLog	(revision 53411)
@@ -1,3 +1,13 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Sat Jan  2 14:44:31 2016  Nobuyoshi Nakada  <nobu@r...>
+
+	* parse.y (regexp): set_yylval_num sets u1, should use nd_tag
+	  instead of nd_state.  [ruby-core:72638] [Bug #11932]
+
+Sat Jan  2 11:11:01 2016  Nobuyoshi Nakada  <nobu@r...>
+
+	* parse.y (set_yylval_num): should be used as nd_state, set to u3.
+	  [ruby-core:72638] [Bug #11932]
+
 Sat Jan  2 02:27:22 2016  Marc-Andre Lafortune  <ruby-core@m...>
 
 	* lib/ostruct.rb: Fix case of frozen object with initializer.
Index: test/ripper/test_ripper.rb
===================================================================
--- test/ripper/test_ripper.rb	(revision 53410)
+++ test/ripper/test_ripper.rb	(revision 53411)
@@ -61,4 +61,15 @@ class TestRipper::Ripper < Test::Unit::T https://github.com/ruby/ruby/blob/trunk/test/ripper/test_ripper.rb#L61
     assert_predicate @ripper, :yydebug
   end
 
+  def test_regexp_with_option
+    bug11932 = '[ruby-core:72638] [Bug #11932]'
+    src = '/[\xC0-\xF0]/u'.force_encoding(Encoding::UTF_8)
+    ripper = Ripper.new(src)
+    ripper.parse
+    assert_predicate(ripper, :error?)
+    src = '/[\xC0-\xF0]/n'.force_encoding(Encoding::UTF_8)
+    ripper = Ripper.new(src)
+    ripper.parse
+    assert_not_predicate(ripper, :error?, bug11932)
+  end
 end if ripper_test
Index: test/ripper/test_files.rb
===================================================================
--- test/ripper/test_files.rb	(revision 53410)
+++ test/ripper/test_files.rb	(revision 53411)
@@ -7,14 +7,14 @@ class TestRipper::Generic < Test::Unit:: https://github.com/ruby/ruby/blob/trunk/test/ripper/test_files.rb#L7
     srcdir = File.expand_path("../../..", __FILE__)
     assert_separately(%W[--disable-gem -rripper - #{srcdir}],
                       __FILE__, __LINE__, <<-'eom', timeout: Float::INFINITY)
-      TEST_RATIO = 0.05 # testing all files needs too long time...
+      TEST_RATIO = ENV["TEST_RIPPER_RATIO"]&.tap {|s|break s.to_f} || 0.05 # testing all files needs too long time...
       class Parser < Ripper
         PARSER_EVENTS.each {|n| eval "def on_#{n}(*args) r = [:#{n}, *args]; r.inspect; Object.new end" }
         SCANNER_EVENTS.each {|n| eval "def on_#{n}(*args) r = [:#{n}, *args]; r.inspect; Object.new end" }
       end
       dir = ARGV.shift
       for script in Dir["#{dir}/{lib,sample,ext,test}/**/*.rb"].sort
-        next if TEST_RATIO < rand
+        next if TEST_RATIO and TEST_RATIO < rand
         assert_nothing_raised("ripper failed to parse: #{script.inspect}") {
           Parser.new(File.read(script), script).parse
         }
Index: parse.y
===================================================================
--- parse.y	(revision 53410)
+++ parse.y	(revision 53411)
@@ -4042,7 +4042,7 @@ regexp		: tREGEXP_BEG regexp_contents tR https://github.com/ruby/ruby/blob/trunk/parse.y#L4042
 			}
 			if (ripper_is_node_yylval(opt)) {
 			    $3 = RNODE(opt)->nd_rval;
-			    options = (int)RNODE(opt)->nd_state;
+			    options = (int)RNODE(opt)->nd_tag;
 			}
 			if (src && NIL_P(rb_parser_reg_compile(parser, src, options, &err))) {
 			    compile_error(PARSER_ARG "%"PRIsVALUE, err);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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