From: "tompng (tomoya ishida) via ruby-core" Date: 2025-02-05T11:24:15+00:00 Subject: [ruby-core:120882] [Ruby master Bug#21114] Prism hangs up while parsing deeply nested `def` 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/