No, defn stores the file and line number in var meta (not the function itself) and source uses that to find the source form, and reads it from the source file. This presumes that a) there is a variable and b) the source where it was defined is in an accessible file. In practice, neither may be true (and those are cases where source won't work).