Allow #ifdef'd pragmas
Sometimes I want to do something like
{-# LANGUAGE CPP #-}
#ifdef RUN_TESTS
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
#endif
module Foo
where
#ifdef RUN_TESTS
import Test.QuickCheck
#endif
newtype Bar = Bar Int
#ifdef RUN_TESTS
deriving Arbitrary
#endif
...
especially (like in that example) for embedding testing code in my modules. I want to #ifdef the pragma so that my code stays Haskell98 when it's only being used, not tested, but this doesn't seem to work.
I suppose this would require two passes of looking for pragmas if CPP was invoked; one before CPP and one after, because the -XCPP option can be invoked in a pragma.
Trac metadata
Trac field | Value |
---|---|
Version | 6.8.2 |
Type | FeatureRequest |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler (Parser) |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Unknown |
Architecture | Unknown |