Squashed commit of the following: [Backport #16516]

commit c98c492578
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date:   Fri Jan 17 16:56:53 2020 +0900

    Added test for f38b3e8c70

commit f38b3e8c70
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date:   Thu Jan 16 18:34:31 2020 +0900

    Fixed the location of args node with numbered parameter
This commit is contained in:
NARUSE, Yui 2020-03-13 21:43:44 +09:00
parent a9284ecb90
commit 5bdbee96e4
3 changed files with 15 additions and 2 deletions

View file

@ -11377,7 +11377,11 @@ static NODE *
args_with_numbered(struct parser_params *p, NODE *args, int max_numparam)
{
if (max_numparam > NO_PARAM) {
if (!args) args = new_args_tail(p, 0, 0, 0, 0);
if (!args) {
YYLTYPE loc = RUBY_INIT_YYLLOC();
args = new_args_tail(p, 0, 0, 0, 0);
nd_set_loc(args, &loc);
}
args->nd_ainfo->pre_args_num = max_numparam;
}
return args;

View file

@ -42,10 +42,11 @@ class TestAst < Test::Unit::TestCase
class Helper
attr_reader :errors
def initialize(path)
def initialize(path, src: nil)
@path = path
@errors = []
@debug = false
@ast = RubyVM::AbstractSyntaxTree.parse(src) if src
end
def validate_range
@ -312,4 +313,10 @@ class TestAst < Test::Unit::TestCase
assert_equal(false, kwrest.call('**nil'))
assert_equal([:a], kwrest.call('**a'))
end
def test_ranges_numbered_parameter
helper = Helper.new(__FILE__, src: "1.times {_1}")
helper.validate_range
assert_equal([], helper.errors)
end
end

View file

@ -1451,6 +1451,8 @@ eom
assert_valid_syntax("->{#{c};->{_1};end;_1}\n")
assert_valid_syntax("->{_1;#{c};->{_1};end}\n")
end
1.times {_1}
end
def test_value_expr_in_condition