Actions
Bug #21114
closed
Prism hangs up while parsing deeply nested `def`
ruby -v:
ruby 3.5.0dev (2025-02-05T08:15:30Z master 141f2924ee) +PRISM [x86_64-linux]
Description
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.
Actions
Like0
Like0Like0Like0Like0Like0