[ruby-core:114601] [Ruby master Bug#18988] Ripper cannot parse some code that has regexp named capture
From:
"jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>
Date:
2023-08-31 03:21:13 UTC
List:
ruby-core #114601
Issue #18988 has been updated by jeremyevans0 (Jeremy Evans).
It appears that YARP parses all of these correctly:
```ruby
YARP.parse("/(?<a>)/ =~ ''; x = a **a, a if false").success?
=> true
YARP.parse("/(?<a>)/ =~ ''; x = a **a, **a if false").success?
=> false
YARP.parse("/(?<a>)/ =~ ''; a %(exit)")
# includes: ([CallNode(20...24)(nil, nil, (20...24), nil, nil, nil, nil, 2, "exit")])
```
----------------------------------------
Bug #18988: Ripper cannot parse some code that has regexp named capture
https://bugs.ruby-lang.org/issues/18988#change-104422
* Author: tompng (tomoya ishida)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.2.0dev (2022-08-29T15:47:09Z :detached: cd7506593a) [x86_64-linux]
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
Ripper does not seems to recognize regexp named capture defining new local variables, fails to parse some code.
~~~ruby
requie 'ripper'
# expect syntax ok, got syntax error
Ripper.sexp("/(?<a>)/ =~ ''; x = a **a, a if false")
# expect syntax error, got syntax ok
Ripper.sexp("/(?<a>)/ =~ ''; x = a **a, **a if false")
# "exit" is a method call, got string_literal
Ripper.sexp("/(?<a>)/ =~ ''; a %(exit)")
~~~
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/