Kazuki Tsujimoto
4ac8d11724
`*` in an array pattern should not be parsed as nil in ripper
...
After 6c0925ba70
, 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.
2023-04-01 16:35:24 +09:00
Kazuki Tsujimoto
d51529244f
[Bug #19175 ] p_kw without a sub pattern should be `assignable'
2023-03-26 18:57:34 +09:00
Kazuki Tsujimoto
6c0925ba70
[Bug #19175 ] p_rest should be `assignable'
...
It should also check for duplicate names.
2023-03-26 18:56:21 +09:00
Shugo Maeda
7686776c05
Hash values should be omitted in Ripper results
2021-09-11 22:03:10 +09:00
Kazuki Tsujimoto
21863470d9
Pattern matching pin operator against expression [Feature #17411 ]
...
This commit is based on the patch by @nobu.
2021-03-21 15:14:31 +09:00
Jeremy Evans
cd0877a93e
Support raise_errors keyword for Ripper.{lex,tokenize,sexp,sexp_raw}
...
Implements [Feature #17276 ]
2020-11-17 21:15:50 -08:00
Nobuyoshi Nakada
52c630da00
Assoc pattern matching ( #3703 )
...
[Feature #17260 ] One-line pattern matching using tASSOC
R-assignment is rejected instead.
2020-10-26 18:00:24 +09:00
Kazuki Tsujimoto
ddded1157a
Introduce find pattern [Feature #16828 ]
2020-06-14 09:24:36 +09:00
Nobuyoshi Nakada
9e01fcd0cb
[ripper] Fixed unique key check in pattern matching
...
Check keys
* by an internal table, instead of unstable dispatched results
* and by parsed key values, instead of escaped forms in the source
2019-11-26 22:54:35 +09:00
Nobuyoshi Nakada
26625bc33c
[ripper] Quoted label without expression must be a local variable
...
The difference from 0b8c73aa65
is to
add the result of `string_add` event to marking objects.
```C
RNODE($1)->nd_rval = add_mark_object(p, $$);
```
2019-11-25 17:42:59 +09:00
Nobuyoshi Nakada
61131edba7
Revert "[ripper] Quoted label without expression must be a local variable"
...
This reverts commit 0b8c73aa65
, which
seems breaking RVALUE consistency check.
2019-11-20 00:56:04 +09:00
Nobuyoshi Nakada
0b8c73aa65
[ripper] Quoted label without expression must be a local variable
2019-11-19 17:18:27 +09:00
Nobuyoshi Nakada
7e0f56fb3d
Name dynamically defined methods with line numbers
2019-09-13 19:48:44 +09:00
ktsj
9738f96fcf
Introduce pattern matching [EXPERIMENTAL]
...
[ruby-core:87945] [Feature #14912 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67586 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-04-17 06:48:03 +00:00
ktsj
7006fdecf2
dsym should be treated as string [ruby-core:91852] [Bug #15670 ]
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67270 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-03-16 04:00:14 +00:00
nobu
838a91633c
parse.y: fix a typo
...
* parse.y (f_kw): fix typo. needs the argument value, not the
label twice. [ruby-core:83174] [Bug #13987 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60138 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-08 06:00:57 +00:00
nobu
80855409ce
parse.y: fix KWD2EID
...
* parse.y (KWD2EID): should respect the previous callback result
for keywords. [ruby-core:83106] [Bug #13971 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60120 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-05 01:53:22 +00:00
nobu
b17a16c279
test_sexp.rb: test for fname
...
* test/ripper/test_sexp.rb (test_def_fname): test for fname in def
statement. [ruby-core:83089] [Bug #13967 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60114 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-04 05:30:44 +00:00
nobu
f2d1848441
parse.y: f_margs parser events
...
* parse.y (f_margs): implemented parser events for massign
formal arguments. [ruby-core:81848] [Bug #13701 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59246 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-01 02:01:05 +00:00
kazu
e3300dce82
{ext,test}/ripper: Specify frozen_string_literal: true.
...
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-02-05 07:54:32 +00:00
naruse
3e92b635fb
Add frozen_string_literal: false for all files
...
When you change this to true, you may need to add more tests.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
nobu
9a28a29b87
parse.y: indented hereoc
...
* parse.y: add heredoc <<~ syntax. [Feature #9098 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-07 14:39:52 +00:00
nobu
448d1d147d
parse.y: last content of heredoc
...
* parse.y (parser_here_document): store dispatched result of
on_tstring_content at the last fragment of a here document.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-28 10:33:58 +00:00
nobu
0a190272cd
parse.y: preserve tSTRING_CONTENT results
...
* parse.y (ripper_flush_string_content): preserve the dispatched
results at tSTRING_CONTENT. [ruby-dev:48714] [Bug #10437 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48674 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-12-01 21:32:04 +00:00
nobu
d40aad1c09
parse.y: fix a typo
...
* parse.y (regexp_contents): fix a typo. pointed out by wanabe.
[ruby-dev:48741] [Bug #10543 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48655 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-30 11:05:58 +00:00
nobu
098127dc2b
parse.y: regexp error in ripper
...
* parse.y (ripper_flush_string_content, parser_parse_string):
preserve parsed string content.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48504 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-11-19 17:10:35 +00:00
nobu
d1ec43ae7a
parse.y: Ripper.sexp returns error
...
* ext/ripper/lib/ripper/sexp.rb (Ripper.sexp, Ripper.sexp_raw):
return nil on error. [ruby-dev:48678] [Bug #10405 ]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-10-26 03:24:18 +00:00