Actions
Bug #19631
openmodule_eval does not propulate absolute_path for Kernel.caller_locations
    Bug #19631:
    module_eval does not propulate absolute_path for Kernel.caller_locations
  
Status:
Open
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
Description
I am using module_eval and noticing that since ruby 3.2 the Kernel locations do not have absolute_path for any of the eval code, though the path is available. This is a regression since at least ruby 3.0 which still works.
I am on 3.2.2, and here is some sample code:
class Script < Module
  script = %q{
    def self.locations
      Kernel.caller_locations.each { |loc|
        puts "LOCATION: #{loc}"
        puts "ABSPATH:  #{loc.absolute_path}"
        puts "PATH:     #{loc.path}"
      }
    end
    self.locations
  }
  module_eval(script, "/this/is/my/path", 0)
end
The output for the code at the top of the caller locations (inside the module_eval) is:
LOCATION: /this/is/my/path:9:in '<class:Script>'              
ABSPATH:                       
PATH:     /this/is/my/path
But the absolute_path should have the correct path data as well
Actions