[ruby-core:120882] [Ruby master Bug#21114] Prism hangs up while parsing deeply nested `def`
From:
"tompng (tomoya ishida) via ruby-core" <ruby-core@...>
Date:
2025-02-05 11:24:15 UTC
List:
ruby-core #120882
Issue #21114 has been reported by tompng (tomoya ishida).
----------------------------------------
Bug #21114: Prism hangs up while parsing deeply nested `def`
https://bugs.ruby-lang.org/issues/21114
* Author: tompng (tomoya ishida)
* Status: Open
* Assignee: prism
* ruby -v: ruby 3.5.0dev (2025-02-05T08:15:30Z master 141f2924ee) +PRISM [x86_64-linux]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
~~~ruby
Prism.parse "def f\n" * 500 # Ruby 3.4
Prism.parse "def f\n" * 5000 # Ruby 3.5
Prism.parse "def initialize: ()->void\n" * 250 # Ruby 3.4
Prism.parse "def initialize: ()->void\n" * 2500 # Ruby 3.5
#=> hang up, Ctrl-C doesn't work
~~~
Expect to raise ParseError with `@type=:nesting_too_deep` like `Prism.parse '(1+'*10000`
### Background
Runnning `rdoc` in `ruby/rbs` directory with Ruby 3.4, RDoc hangs up.
RDoc tries to parse the partial file content, and stops with `stdlib/ripper/0/ripper.rbs` (https://github.com/ruby/rbs/blob/a7178b12b041f5b304f4076aa01efed817ba8040/stdlib/ripper/0/ripper.rbs)
Parseable checking code in RDoc https://github.com/ruby/rdoc/blob/14a7631a3775e033791f13baa3be76c94b908e3d/lib/rdoc/markup/to_html.rb#L437
```
def parseable? text
...
eval("BEGIN { throw :valid, true }\n#{text}")
...
end
```
However, RBS doesn't seem to use RDoc, so I think it's not a big problem.
--
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/lists/ruby-core.ml.ruby-lang.org/