
Issue #21361 has been updated by ko1 (Koichi Sasada). Note: As you may know, ISeq depends on the fact that one iseq has only one filename, so we need to change many places (we may need to include filename information along with the line number). ---------------------------------------- Feature #21361: Set execution file and line https://bugs.ruby-lang.org/issues/21361#change-113556 * Author: kddnewton (Kevin Newton) * Status: Open ---------------------------------------- I'd like to be able to set the execution file and execution line for the purpose of generated Ruby code. My specific use case is the Ruby files that are templated in Prism, but I also believe it would be beneficial for ERB. The functionality I'm looking for effectively mirrors the `#line` macro in C. The goal would be for this to be entirely statically analyzable, so whatever syntax ends up being used would have to be required to be constant. A couple of options for this would be: * An entirely new syntax construct (`__SOURCE__ 5 "foo.erb"`) * Re-using existing syntax constructs (`__LINE__ = 5; __FILE__ = "foo.erb"`) * A magic comment (`# -*- source-line: 5; source-file: foo.erb -*-` or `# source: 5 foo.erb`) I don't particularly care which one is selected, it's just the end-result that I'm looking for that we can mark the source line and file within the generated code. -- https://bugs.ruby-lang.org/