@@ -54,42 +54,42 @@ applyPackages origPath inPath outPath packagePaths' = withFile outPath WriteMode
5454 where
5555 hPutTextBuilder h = BU.hPutBuilder h . TL.encodeUtf8Builder . TL.toLazyText
5656
57−
58− -- I'm pretty sure there's a certain amount of oversimplification in CabalPackageInfo, so I doubt this is fully robust.
59−
6057generateHeader :: FilePath -> CabalPackageInfo -> TL.Builder
6158generateHeader origPath packageInfo =
6259 hsExtensions <> ghcOptions <> lineNumberPragma origPath
6360 where
6461 hsExtensions =
65− if not (null extList)
66− then TL.fromText "{-# LANGUAGE "
67− <> mconcat (intersperse (TL.fromText ", ") extList)
68− <> TL.fromText " #-}\n"
69− else mempty
62+ if null extList
63+ then mempty
64+ else pragma $ TL.fromText "LANGUAGE " <> mconcat (intersperse (TL.fromText ", ") extList)
7065 extList = addDefaultLanguage $ concatMap showExt $ _cabalPackageInfo_defaultExtensions packageInfo
7166 addDefaultLanguage =
7267 case _cabalPackageInfo_defaultLanguage packageInfo of
7368 Nothing -> id
7469 Just x -> case x of
75− UnknownLanguage ext -> ( TL.fromString ext :)
76− ext -> ( TL.fromString (show ext) :)
70+ UnknownLanguage ext -> (TL.fromString ext :)
71+ ext -> (TL.fromString (show ext) :)
7772 showExt = \case
7873 EnableExtension ext -> [TL.fromString (show ext)]
7974 DisableExtension _ -> []
8075 UnknownExtension ext -> [TL.fromString ext]
8176
8277 ghcOptions =
83− if not (null optList)
84− then TL.fromText "{-# OPTIONS_GHC "
85− <> mconcat (intersperse (TL.fromText " ") optList)
86− <> TL.fromText " #-}\n"
87− else mempty
88− optList = map TL.fromString
89− $ filter (not . isPrefixOf "-O")
90− $ fromMaybe []
91− $ lookup GHC (_cabalPackageInfo_compilerOptions packageInfo)
78+ if null optList
79+ then mempty
80+ else pragma $
81+ TL.fromText "OPTIONS_GHC " <> mconcat (intersperse (TL.fromText " ") (map TL.fromString optList))
82+ optList
83+ = filter (not . isPrefixOf "-O")
84+ $ fromMaybe []
85+ $ lookup GHC (_cabalPackageInfo_compilerOptions packageInfo)
9286
9387lineNumberPragma :: FilePath -> TL.Builder
9488lineNumberPragma origPath =
95− TL.fromText "{-# LINE 1 \"" <> TL.fromString origPath <> TL.fromText "\" #-}\n"
89+ pragma $ TL.fromText "LINE 1 " <> quoted '"' (TL.fromString origPath)
90+
91+pragma :: TL.Builder -> TL.Builder
92+pragma x = TL.fromText "{-# " <> x <> TL.fromText " #-}\n"
93+
94+quoted :: Char -> TL.Builder -> TL.Builder
95+quoted char x = TL.singleton char <> x <> TL.singleton char