How is the __LINE__ and __FILE__ constants implemented in Ruby? -
it seems __file__ , __line__ constants dynamically updated current file , line numbers under execution, wondering how behaviour implemented in ruby?
i've greped source code there many noises __line__ , __file__ appearance, wonder me point source code , provide clue understand behaviour.
explanation in either rubinis or mri fine.
both __file__ , __line__ replaced literals directly in parser:
case keyword__file__: return new_str(rb_external_str_new_with_enc(ruby_sourcefile, strlen(ruby_sourcefile), rb_filesystem_encoding())); case keyword__line__: return new_lit(int2fix(tokline)); in other words, behave if had typed in resulting string or number yourself.
note __line__, doesn't behave how you'd expect.
Comments
Post a Comment