I noticed when I took getImpl of a typed closure or proc there was an extra node dedicated to the result variable.
Not noticing it led to some truly confusing error messages when I was trying to take an existing proc and make a new proc derived from it.
I would suggest adding an extra slot into untyped procDefs that will be newEmptyNode() when the proc hasn't been typed yet.
Or at the very least this feature should be better documented in macros.nim.
I also noticed that the return statement in typed procs turns
return 5
into
return result = 5
which is invalid code if you turn the result variable into an ident.
This should probably be documented better as well.