Handle --no-prelude flag in the Metadata.Prelude module rather than distributed across many modules
Good in case the meaning of —no-prelude changes
This commit is contained in:
parent
9ccc707594
commit
9ff26223d8
4 changed files with 10 additions and 8 deletions
|
@ -26,7 +26,7 @@ import qualified Transform.Canonicalize as Canonical
|
|||
|
||||
build :: Bool -> Interfaces -> String -> Either [Doc] MetadataModule
|
||||
build noPrelude interfaces source =
|
||||
do let add = if noPrelude then id else Prelude.add
|
||||
do let add = Prelude.add noPrelude
|
||||
infixes = Map.fromList . map (\(assoc,lvl,op) -> (op,(lvl,assoc)))
|
||||
. concatMap iFixities $ Map.elems interfaces
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ compileArgs flags =
|
|||
build :: Flag.Flags -> FilePath -> IO ()
|
||||
build flags rootFile =
|
||||
do let noPrelude = Flag.no_prelude flags
|
||||
builtIns <- if noPrelude then return Map.empty else Prelude.interfaces
|
||||
builtIns <- Prelude.interfaces noPrelude
|
||||
|
||||
files <- if Flag.make flags
|
||||
then getSortedDependencies (Flag.src_dir flags) builtIns rootFile
|
||||
|
|
|
@ -21,7 +21,7 @@ compile source =
|
|||
|
||||
{-# NOINLINE interfaces #-}
|
||||
interfaces :: M.Interfaces
|
||||
interfaces = unsafePerformIO $ Prelude.interfaces
|
||||
interfaces = unsafePerformIO $ Prelude.interfaces False
|
||||
|
||||
-- |This function extracts the module name of a given source program.
|
||||
moduleName :: String -> Maybe String
|
||||
|
|
|
@ -13,10 +13,10 @@ import qualified Data.ByteString.Lazy as BS
|
|||
|
||||
import qualified InterfaceSerialization as IS
|
||||
|
||||
add :: Module def -> Module def
|
||||
add (Module name exs ims decls) = Module name exs (customIms ++ ims) decls
|
||||
add :: Bool -> Module def -> Module def
|
||||
add noPrelude (Module name exs ims decls) = Module name exs (customIms ++ ims) decls
|
||||
where
|
||||
customIms = concatMap addModule prelude
|
||||
customIms = if noPrelude then [] else concatMap addModule prelude
|
||||
|
||||
addModule (n, method) = case lookup n ims of
|
||||
Nothing -> [(n, method)]
|
||||
|
@ -30,8 +30,10 @@ prelude = text ++ map (\n -> (n, Hiding [])) modules
|
|||
modules = [ "Basics", "Signal", "List", "Maybe", "Time", "Prelude"
|
||||
, "Graphics.Element", "Color", "Graphics.Collage" ]
|
||||
|
||||
interfaces :: IO Interfaces
|
||||
interfaces = safeReadDocs =<< Path.getDataFileName "interfaces.data"
|
||||
interfaces :: Bool -> IO Interfaces
|
||||
interfaces noPrelude =
|
||||
do ifaces <- safeReadDocs =<< Path.getDataFileName "interfaces.data"
|
||||
return $ if noPrelude then Map.empty else ifaces
|
||||
|
||||
safeReadDocs :: FilePath -> IO Interfaces
|
||||
safeReadDocs name =
|
||||
|
|
Loading…
Reference in a new issue