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

ruby-changes:62845

From: nagachika <ko1@a...>
Date: Sun, 6 Sep 2020 11:16:44 +0900 (JST)
Subject: [ruby-changes:62845] dd4e51d84e (ruby_2_7): merge revision(s) ff5e66034006a875125581114cce19d46843b32a: [Backport #17015]

https://git.ruby-lang.org/ruby.git/commit/?id=dd4e51d84e

From dd4e51d84e01d9c60458dfe19a0b4d4e05b55140 Mon Sep 17 00:00:00 2001
From: nagachika <nagachika@r...>
Date: Sun, 6 Sep 2020 11:16:29 +0900
Subject: merge revision(s) ff5e66034006a875125581114cce19d46843b32a: [Backport
 #17015]

	Added `NODE_SPECIAL_EXCESSIVE_COMMA` info to `ARGS` of
	 `RubyVM::AbstractSyntaxTree`.

diff --git a/ast.c b/ast.c
index 79d8b12..a0c0262 100644
--- a/ast.c
+++ b/ast.c
@@ -570,7 +570,9 @@ node_children(rb_ast_t *ast, NODE *node) https://github.com/ruby/ruby/blob/trunk/ast.c#L570
                                         var_name(ainfo->first_post_arg),
                                         INT2NUM(ainfo->post_args_num),
                                         NEW_CHILD(ast, ainfo->post_init),
-                                        var_name(ainfo->rest_arg),
+                                        (ainfo->rest_arg == NODE_SPECIAL_EXCESSIVE_COMMA
+                                            ? ID2SYM(rb_intern("NODE_SPECIAL_EXCESSIVE_COMMA"))
+                                            : var_name(ainfo->rest_arg)),
                                         (ainfo->no_kwarg ? Qfalse : NEW_CHILD(ast, ainfo->kw_args)),
                                         (ainfo->no_kwarg ? Qfalse : NEW_CHILD(ast, ainfo->kw_rest_arg)),
                                         var_name(ainfo->block_arg));
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb
index da7dde4..0d846b7 100644
--- a/test/ruby/test_ast.rb
+++ b/test/ruby/test_ast.rb
@@ -330,4 +330,19 @@ class TestAst < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_ast.rb#L330
     assert_equal(:+, op)
     assert_equal(:VCALL, value.type)
   end
+
+  def test_args
+    rest = 6
+    node = RubyVM::AbstractSyntaxTree.parse("proc { |a| }")
+    _, args = *node.children.last.children[1].children
+    assert_equal(nil, args.children[rest])
+
+    node = RubyVM::AbstractSyntaxTree.parse("proc { |a,| }")
+    _, args = *node.children.last.children[1].children
+    assert_equal(:NODE_SPECIAL_EXCESSIVE_COMMA, args.children[rest])
+
+    node = RubyVM::AbstractSyntaxTree.parse("proc { |*a| }")
+    _, args = *node.children.last.children[1].children
+    assert_equal(:a, args.children[rest])
+  end
 end
diff --git a/version.h b/version.h
index eb34c6d..dcdeec6 100644
--- a/version.h
+++ b/version.h
@@ -2,7 +2,7 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L2
 # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
 #define RUBY_VERSION_TEENY 1
 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
-#define RUBY_PATCHLEVEL 121
+#define RUBY_PATCHLEVEL 122
 
 #define RUBY_RELEASE_YEAR 2020
 #define RUBY_RELEASE_MONTH 9
-- 
cgit v0.10.2


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

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