* in an array pattern should not be parsed as nil in ripper

After 6c0925ba7017efde6091e2ec4f1a6be268166696, it was impossible
to distinguish between the presence or absence of `*`.

    # Before the commit
    Ripper.sexp('0 in []')[1][0][2][1]  #=> [:aryptn, nil, nil, nil, nil]
    Ripper.sexp('0 in [*]')[1][0][2][1] #=> [:aryptn, nil, nil, [:var_field, nil], nil]

    # After the commit
    Ripper.sexp('0 in []')[1][0][2][1]  #=> [:aryptn, nil, nil, nil, nil]
    Ripper.sexp('0 in [*]')[1][0][2][1] #=> [:aryptn, nil, nil, nil, nil]

This commit reverts it.
This commit is contained in:
Kazuki Tsujimoto 2023-04-01 16:28:05 +09:00
parent 3a238eff88
commit 4ac8d11724
No known key found for this signature in database
GPG Key ID: BCEA306C49B81CD7
2 changed files with 5 additions and 5 deletions

View File

@ -4656,7 +4656,7 @@ p_rest : tSTAR tIDENTIFIER
/*%%%*/ /*%%%*/
$$ = 0; $$ = 0;
/*% %*/ /*% %*/
/*% ripper: Qnil %*/ /*% ripper: var_field(p, Qnil) %*/
} }
; ;

View File

@ -229,7 +229,7 @@ eot
[__LINE__, %q{ case 0; in *; end }] => [__LINE__, %q{ case 0; in *; end }] =>
[:case, [:case,
[:@int, "0", [1, 5]], [:@int, "0", [1, 5]],
[:in, [:aryptn, nil, nil, nil, nil], [[:void_stmt]], nil]], [:in, [:aryptn, nil, nil, [:var_field, nil], nil], [[:void_stmt]], nil]],
[__LINE__, %q{ case 0; in *,a; end }] => [__LINE__, %q{ case 0; in *,a; end }] =>
[:case, [:case,
@ -238,7 +238,7 @@ eot
[:aryptn, [:aryptn,
nil, nil,
nil, nil,
nil, [:var_field, nil],
[[:var_field, [:@ident, "a", [1, 13]]]]], [[:var_field, [:@ident, "a", [1, 13]]]]],
[[:void_stmt]], [[:void_stmt]],
nil]], nil]],
@ -426,9 +426,9 @@ eot
[:in, [:in,
[:fndptn, [:fndptn,
nil, nil,
nil, [:var_field, nil],
[[:var_field, [:@ident, "a", [1, 9]]]], [[:var_field, [:@ident, "a", [1, 9]]]],
nil], [:var_field, nil]],
nil, nil,
nil]], nil]],