34
35
-- Setting up Interface before compile
35
36
--------------------------------------------------
37
mnameFromFileName :: TCM () -> FilePath -> TCM ModuleName
38
mnameFromFileName typecheck = (sigMName <$>) .
39
(maybe (typecheck>> getSignature) (return . iSignature) =<<) .
40
liftIO . readInterface . setExtension ".agdai"
42
mazCurrentMod = "MazCurrentModule"
44
setInterface :: (Interface, ClockTime) -> TCM ()
45
setInterface (i,t) = do modify $ \s -> s{ stImportedModules = S.empty
46
, stHaskellImports = iHaskellImports i
48
(`uncurry` (i,t)) . visitModule =<< mazCurMName
50
mazCurMName :: TCM ModuleName
51
mazCurMName = maybe firstTime return . L.lookup mazCurrentMod .
52
L.map (\m -> (show m, m)) . keys =<< getVisitedModules
53
where firstTime = concreteToAbstract_ . NewModuleQName . C.QName $
54
C.Name noRange [C.Id mazCurrentMod]
38
setInterface :: Interface -> TCM ()
39
setInterface i = modify $ \s -> s
40
{ stImportedModules = S.empty
41
, stCurrentModule = Just $ iModuleName i
56
44
curIF :: TCM Interface
59
mi <- M.lookup m <$> getVisitedModules
61
Just (i, _) -> return i
62
Nothing -> fail $ "No such module: " ++ show m
46
mName <- stCurrentModule <$> get
48
Nothing -> __IMPOSSIBLE__
50
mm <- getVisitedModule (toTopLevelModuleName name)
52
Nothing -> __IMPOSSIBLE__
53
Just mi -> return $ miInterface mi
64
55
curSig :: TCM Signature
65
56
curSig = iSignature <$> curIF
101
90
ms <- sortBy (compare `on` (length . mnameToList)) .
102
91
L.filter (flip (isPrefixOf `on` mnameToList) m) <$>
103
((:) <$> curMName <*> (keys <$> getVisitedModules))
92
L.map (iModuleName . miInterface) . M.elems <$>
104
94
return $ case ms of (m' : _) -> m'; _ -> mazerror$ "tlmodOf: "++show m
106
96
-- qualify HsName n by the module of QName q, if necessary;
143
133
mazMod :: ModuleName -> Module
144
134
mazMod = mazMod' . show
145
135
mazerror msg = error $ mazstr ++ ": " ++ msg
146
mazCoerce = hsVarUQ $ HsIdent "unsafeCoerce"
136
mazCoerce = HsVar $ Qual unsafeCoerceMod (HsIdent "unsafeCoerce")
148
138
-- for Runtime module: Not really used (Runtime modules has been abolished).
149
139
rtmMod = mazMod' "Runtime"