From: "Eregon (Benoit Daloze) via ruby-core" Date: 2023-03-07T14:05:57+00:00 Subject: [ruby-core:112718] [Ruby master Feature#19452] `Thread::Backtrace::Location` should have column information if possible. Issue #19452 has been updated by Eregon (Benoit Daloze). YARP for sure will be useful for this. However I think it is somewhat independent of whether AST nodes/bytecodes/etc keep track of column information or not. TruffleRuby already tracks the column information, so it would be trivial to provide that (except that the current parser doesn't keep column info, but YARP does). Regarding finding out the actually method call name and the `.` before, maybe YARP could/should remember those two locations? WDYT @kddeisz? That would avoid the need to reparse, at the cost of having to store 2 extra uint32 "byte offsets" per call node. I like the proposed API because it's straightforward. I think it's also enough to identity which call it is, e.g. for `foo(1).bar(2).baz(3)`, i.e. it's always the rightmost call inside `first_column...last_columns`. But that's indeed not as clear or obvious as underlining the operator + method name alone. ---------------------------------------- Feature #19452: `Thread::Backtrace::Location` should have column information if possible. https://bugs.ruby-lang.org/issues/19452#change-102174 * Author: ioquatix (Samuel Williams) * Status: Open * Priority: Normal ---------------------------------------- I discussed this with @mame and it would be pretty useful if we could also get the column information from exception backtrace location, even if it was slow. A POC: ```ruby class Thread::Backtrace::Location if defined?(RubyVM::AbstractSyntaxTree) def first_column RubyVM::AbstractSyntaxTree.of(self, keep_script_lines: true).first_column end else def first_column raise NotImplementedError end end end ``` It would be good to have a standard interface, so we follow the same interface as https://bugs.ruby-lang.org/issues/19451 and vice versa where it makes sense. I'll investigate it. -- 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/postorius/lists/ruby-core.ml.ruby-lang.org/