
#8869: External preprocessor not used after TH name quote ----------------------------------+-------------------------- Reporter: myrix | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.4.1 Keywords: | Operating System: Linux Architecture: x86_64 (amd64) | Type of failure: Other Difficulty: Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | ----------------------------------+-------------------------- Module {{{ {-# LANGUAGE CPP, TemplateHaskell #-} module Main where main = do putStrLn $ show 'id putStrLn __FILE__ }}} fails to compile with external preprocessor: {{{
ghc -pgmP cpphs -optP --cpp Main.hs [1 of 1] Compiling Main ( Main.hs, Main.o )
Main.hs:7:12: Not in scope: `__FILE__' }}} {{{__FILE__}}} is not expanded: {{{
ghc -E -pgmP cpphs -optP --cpp Main.hs cat Main.hspp {-# LINE 1 "Main.hs" #-} #line 1 "Main.hs" {-# LANGUAGE CPP, TemplateHaskell #-}
module Main where main = do putStrLn $ show 'id putStrLn __FILE__ }}} Without external preprocessor (just {{{ghc Main.hs}}}) module compiles successfully. Move name quote after {{{__FILE__}}}, like this: {{{ {-# LANGUAGE CPP, TemplateHaskell #-} module Main where main = do putStrLn __FILE__ putStrLn $ show 'id }}} and it work with external preprocessor just fine: {{{
ghc -pgmP cpphs -optP --cpp Main.hs [1 of 1] Compiling Main ( Main.hs, Main.o ) Linking Main ... ./Main Main.hs GHC.Base.id }}}
-- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8869 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler