From: "k0kubun (Takashi Kokubun) via ruby-core" Date: 2025-02-14T05:17:47+00:00 Subject: [ruby-core:121034] [Ruby master Bug#21114] Prism hangs up while parsing deeply nested `def` Issue #21114 has been updated by k0kubun (Takashi Kokubun). Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED to 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: DONE ruby_3_4 commit:9a0984436888a59f4914c3035c53657baf62ce2b merged revision(s) commit:b21e1aed2ed5b22b50efc658289a403eeed581df. ---------------------------------------- Bug #21114: Prism hangs up while parsing deeply nested `def` https://bugs.ruby-lang.org/issues/21114#change-111942 * Author: tompng (tomoya ishida) * Status: Closed * 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: DONE ---------------------------------------- ~~~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/