[DKF]: This is an idea I came up with at the 2018 Tcl Conference: ======tcl % dict filter [tcl::unsupported::getbytecode proc parray] key initiallinenumber sourcefile initiallinenumber 11 sourcefile /home/dkf/develop/tcl/library/parray.tcl ====== It uses the fact that [getbytecode] accesses into the code origin system (which is otherwise only exposed through [info frame], and which is horrible internally) and then [dict filter]s the result. (It reports the line number and file name of the _first_ line of the procedure. Dynamically-produced procedures just lack the info.) I think [karll]'s desire for this functionality to be better exposed will be practical to satisfy.