
On 29 Jan 2010 at 15:14, Malcolm Wallace
The flag -P for traditional gnu cpp (or --noline for stand-alone cpphs) should suppress the initial #line noise.
Does ghc still fail to recognise a module-start pragma, even if the only characters preceding it are whitespace?
I'm not sure, but ghci apparently fails to recognise a file-header pragma if it is preceded by a {-# LINE ... #-} pragma.
I intended to give an example.
---- file foo.h ---- #if __GLASGOW_HASKELL__ == 604 #define PRAGMA(foo) {-# OPTIONS_GHC -X foo #-} #else #define PRAGMA(foo) {-# LANGUAGE foo #-}
---- file Bar.hs ---- #include "foo.h" PRAGMA(MyLanguageOption) module Bar where
---- result ---- $ ghc-6.8.2 -E -cpp -optP-P Bar.hs $ cat Bar.hspp {-# LINE 1 "Bar.hs" #-}
How on earth does the *C* preprocessor manage to insert a *Haskell* {-# LINE ... #-} pragma? (I see that myself as well in some configurations, some cpphs (which I could understand), but some not.)
{-# LANGUAGE MyLanguageOption #-} module Bar where
$ ghc-6.4.1 -E -cpp -optP-P Bar.hs $ cat Bar.hspp
{-# OPTIONS_GHC -X MyLanguageOption #-} module Bar where
-- Iain Alexander ia@stryx.demon.co.uk