{-# LANGUAGE Haskell2010 #-}
{-# LANGUAGE CPP #-}
module CPP where

#define SOMETHING1

foo :: String
foo :: String
foo = {-  " single quotes are fine in block comments
          {- nested block comments are fine -}
       -} String
"foo"

#define SOMETHING2

bar :: String
bar :: String
bar = String
"block comment in a string is not a comment {- "

#define SOMETHING3

-- " single quotes are fine in line comments
-- {- unclosed block comments are fine in line comments

-- Multiline CPP is also fine
#define FOO\
  1

baz :: String
baz :: String
baz = String
"line comment in a string is not a comment --"