I have a task to convert one Haskell expression to another.
And I'd like to report errors properly.

[interpret|   -- error reported here
   valid haskell code
   invalid code           <- error
|]

I can parse it with haskell-src-exts or haskell-src-meta.
but if I have error in the code (type-check) error is positioned on the first line of the QQ-expression.

Do you know is it possible to report error at the line where it has happened or
to keep original source code location in the Exp.

In the function I do transformation Exp -> Exp.

Or maybe there is a better way to do it instead of QQ?