How do compile errors propagate back from the target language to the source language?

They are not supposed to produce code that doesn't compile, why would they?

Debugger positions on the other hand are a pain with these things.

Uh yes, that's what I meant ;)

In C/C++ you have the #line preprocessor directive. It would be nice if Go had something similar.

Go has apparently got //line directives, and this project uses them.