> But __FILE__ is a token recognized by the parser. It is neither a
> constant nor a method of any module, including Kernel.

True. But if you were to try to define it yourself it woul be a Kernel
module.

Anyway, I've come back to this old thread b/c I realize now, why
exactly this would be more approriate as a Kernel method and not a
Module method: the definition requires a  "Binding.of_caller" in order
to work --ie. if one were to try to do it in ruby themselves. So
underthehood it must be doing the same. Since Binding.of_caller is
considered "not good" (do I  understand correctly that matz has
declined this functionality for Ruby?) then this method goes against
that grain.

How did I realize this? I was trying to write an Ruby interpolate
method as a String module function. And for the same reason it was not
possible --I had to put it in Kernel.

T.