Quoting an internal variable causes an error when splicing
{-# LANGUAGE TemplateHaskell #-}
module A where
import B
main = $$f
{-# LANGUAGE TemplateHaskell #-}
module B(f) where
d = 0
f = [|| d ||]
Note that d is not exported from B.
[1 of 2] Compiling B ( B.hs, B.o )
[2 of 2] Compiling A ( A.hs, A.o )
A.hs:6:8: error:
• Can't find interface-file declaration for variable B.d
Probable cause: bug in .hi-boot file, or inconsistent .hi file
Use -ddump-if-trace to get an idea of which file caused the error
• In the expression: B.d
In the result of the splice:
$f
To see what the splice expanded to, use -ddump-splices
In the Template Haskell splice $$f
|
6 | main = $$f
| ^^^
This doesn't seem to happen for untyped quotes/splices.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.6.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |