Not directly on-topic but it seems somewhat relevant:
"A reasonable question to ask is whether it's really necessary to
allow more than one src info. Could we not maintain the traditional
one-source-location per stack frame location, but allow the user to
choose what that location records, and still get the effect we wanted?
As it so happens, the first version of Converge did just that so I can
conclusively answer this with a no. The reason is very simple: when an
error happens at run-time, there is no way of knowing which layer was
responsible. Unlike traditional compilers, which are heavily tested
over multiple years, DSL compilers tend to be more fragile and more
susceptible to bugs. When an error happens, there are roughly even
odds as to whether the DSL compiler author or the DSL user is at
fault. Only if the debugging information for both layers is reported
can both people have a chance of debugging the problem."