
Issue #21014 has been updated by tenderlovemaking (Aaron Patterson). Fix sent here: https://github.com/ruby/ruby/pull/12527 ---------------------------------------- Bug #21014: Prism doesn't set node_id on iseqs correctly https://bugs.ruby-lang.org/issues/21014#change-111340 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Assignee: prism * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- Given this code: ```ruby f = proc { <<END } heredoc END iseq = RubyVM::InstructionSequence.of(f) p iseq.to_a[4][:node_id] ``` Output on parse.y: ``` $ ./miniruby --parser=parse.y test.rb 3 ``` Output on Prism: ``` $ ./miniruby test.rb -1 ``` I don't expect node IDs on Prism to match parse.y, but I do expect the node id to be a legitimate node id. For example, this program should work: ```ruby f = proc { <<END } heredoc END iseq = RubyVM::InstructionSequence.of(f) require "prism" node_id = iseq.to_a[4][:node_id] ast = Prism.parse(File.binread(__FILE__)) p ast.value.breadth_first_search { |node| node.node_id == node_id } ``` -- https://bugs.ruby-lang.org/