我正在写一个TH库,我有一种情况,我正在做一些模块范围的东西。简而言之,我正在从所有准引用中收集信息并putQ
将其转换为Q
。
然后,一旦对Haskell模块进行了类型检查,我就会查找所有这些状态并用它做一些事情。我通过使用addModFinalizer
录制最后一个动作来管理它。
现在,问题是:有时候,这个最后的动作可能会失败。如果是,我想报告编译错误。使用fail
执行此操作时,会收到如下所示的错误消息:
Main.hs:1:1: error: My message of something going wrong with the whole module...
|
1 | {-# LANGUAGE TemplateHaskell, QuasiQuotes #-}
| ^
如您所见,GHC决定将我的错误消息与文件顶部相关联。 有什么方法可以告诉GHC不要将我的错误与一些代码相关联吗?我更喜欢这样的东西:
Main.hs: error: My message of something going wrong with the whole module...