@@ -72,10 +72,9 @@ loadSource f = do iLOG ("Reading " ++ f)
72 file <- lift $ readFile f
72 file <- lift $ readFile f
73 (mname, modules, rest, pos) <- parseImports f file
73 (mname, modules, rest, pos) <- parseImports f file
74 mapM_ loadModule modules
74 mapM_ loadModule modules
75− ds' <- parseProg (defaultSyntax {syn_namespace = mname }) f rest pos
75+ ds' <- parseProg (defaultSyntax {syn_namespace = reverse mname })
76− let ds = case mname of
77+ let ds = namespaces mname ds'
78− (x:_) -> [PNamespace x ds']
79 logLvl 3 (dumpDecls ds)
78 logLvl 3 (dumpDecls ds)
80 i <- getIState
79 i <- getIState
81 logLvl 10 (show (toAlist (idris_implicits i)))
80 logLvl 10 (show (toAlist (idris_implicits i)))
@@ -84,6 +83,9 @@ loadSource f = do iLOG ("Reading " ++ f)
84 mapM_ (elabDecl toplevel) ds
83 mapM_ (elabDecl toplevel) ds
85 iLOG ("Finished " ++ f)
84 iLOG ("Finished " ++ f)
87+ namespaces [] ds = ds
88+ namespaces (x:xs) ds = [PNamespace x (namespaces xs ds)]
88parseExpr i = runParser (pFullExpr defaultSyntax) i "(input)"
90parseExpr i = runParser (pFullExpr defaultSyntax) i "(input)"
89parseTac i = runParser (do t <- pTactic defaultSyntax
91parseTac i = runParser (do t <- pTactic defaultSyntax
@@ -107,8 +109,11 @@ parseImports fname input
108pHeader :: IParser [String]
110pHeader :: IParser [String]
109pHeader = try (do reserved "module"; i <- identifier; lchar ';'
111pHeader = try (do reserved "module"; i <- identifier; lchar ';'
110− return [i])
112+ return (parseName i))
111 <|> return []
113 <|> return []
114+ where parseName x = case span (/='.') x of
116+ (x, '.':y) -> x : parseName y
114pfc :: IParser FC
119pfc :: IParser FC
@@ -123,7 +128,9 @@ pImport :: IParser String
123pImport = do reserved "import"
128pImport = do reserved "import"
124 f <- identifier
129 f <- identifier
125 lchar ';'
130 lchar ';'
126− return f
131+ return (map dot f)
128parseProg :: SyntaxInfo -> FilePath -> String -> SourcePos -> Idris [PDecl]
135parseProg :: SyntaxInfo -> FilePath -> String -> SourcePos -> Idris [PDecl]
129parseProg syn fname input pos
136parseProg syn fname input pos