Issue #22020 has been updated by Eregon (Benoit Daloze). My motivation here is I would like to implement `Thread::Bactrace::Location#source_range`. For this to work in `--parser=parse.y` mode it needs to return the same start/end line/column as Prism in all cases of `RubyVM::AbstractSyntaxTree.of(a Thread::Bactrace::Location)`. Some adjustments could maybe be done specifically in the `Thread::Bactrace::Location#source_range` method if not ambiguous, but it seems cleaner to align the location in `RubyVM::AbstractSyntaxTree`, I think at least for this case. Concretely for `no_such_method(1, 2, kw: :arg) { 123 }` if we want to highlight the entire expression raising the NoMethodError we should highlight `no_such_method(1, 2, kw: :arg) { 123 }`, and not `no_such_method(1, 2, kw: :arg)` which is what `RubyVM::AbstractSyntaxTree` currently gives as the location. ---------------------------------------- Bug #22020: Inner call node without all arguments returned by RubyVM::AbstractSyntaxTree.of for call with a block https://bugs.ruby-lang.org/issues/22020#change-117172 * Author: Eregon (Benoit Daloze) * Status: Open * ruby -v: ruby 4.1.0dev * Backport: 3.3: UNKNOWN, 3.4: UNKNOWN, 4.0: UNKNOWN ---------------------------------------- ```ruby begin foo(1, 2, kw: :arg) { 42 } rescue => e pp RubyVM::AbstractSyntaxTree.of e.backtrace_locations[0] end ``` ``` $ ruby --parser=parse.y rubyvm_ast_node_id_loc.rb (FCALL@2:2-2:21 :foo (LIST@2:6-2:20 (INTEGER@2:6-2:7 1) (INTEGER@2:9-2:10 2) (HASH@2:12-2:20 (LIST@2:12-2:20 (SYM@2:12-2:15 :kw) (SYM@2:16-2:20 :arg) nil)) nil)) ``` That covers `foo(1, 2, kw: :arg)` so all arguments except the block argument, which looks inconsistent. I believe it should be: ``` $ ruby --parser=parse.y rubyvm_ast_node_id_loc.rb (ITER@2:2-2:28 (FCALL@2:2-2:21 :foo (LIST@2:6-2:20 (INTEGER@2:6-2:7 1) (INTEGER@2:9-2:10 2) (HASH@2:12-2:20 (LIST@2:12-2:20 (SYM@2:12-2:15 :kw) (SYM@2:16-2:20 :arg) nil)) nil)) (SCOPE@2:22-2:28 tbl: [] args: nil body: (INTEGER@2:24-2:26 42))) ``` which covers `foo(1, 2, kw: :arg) { 42 }`. PR: https://github.com/ruby/ruby/pull/16836 -- https://bugs.ruby-lang.org/