on master help sign in
Switch from "open" keyword to (..) to import everything
080eb08Evan Czaplicki
compiler/Parse/Module.hs+15−10
@@ -8,7 +8,7 @@ import Parse.Helpers
8import SourceSyntax.Module (ImportMethod(..), Imports)
8import SourceSyntax.Module (ImportMethod(..), Imports)
9
9
10varList :: IParser [String]
10varList :: IParser [String]
11−varList = parens $ commaSep1 (var <|> parens symOp)
11+varList = commaSep1 (var <|> parens symOp)
12
12
13getModuleName :: String -> Maybe String
13getModuleName :: String -> Maybe String
14getModuleName source =
14getModuleName source =
@@ -27,7 +27,7 @@ moduleDef = do
27 whitespace
27 whitespace
28 names <- dotSep1 capVar <?> "name of module"
28 names <- dotSep1 capVar <?> "name of module"
29 whitespace
29 whitespace
30− exports <- option [] varList
30+ exports <- option [] (parens varList)
31 whitespace <?> "reserved word 'where'"
31 whitespace <?> "reserved word 'where'"
32 reserved "where"
32 reserved "where"
33 return (names, exports)
33 return (names, exports)
@@ -38,17 +38,22 @@ imports = option [] ((:) <$> import' <*> many (try (freshLine >> import')))
38import' :: IParser (String, ImportMethod)
38import' :: IParser (String, ImportMethod)
39import' =
39import' =
40 do reserved "import"
40 do reserved "import"
41− whitespace
42− open <- optionMaybe (reserved "open")
43 whitespace
41 whitespace
44 name <- intercalate "." <$> dotSep1 capVar
42 name <- intercalate "." <$> dotSep1 capVar
45− case open of
46− Just _ -> return (name, Hiding [])
47− Nothing -> let how = try (whitespace >> (as' <|> importing'))
48− in (,) name <$> option (As name) how
43+ (,) name <$> option (As name) method
49 where
44 where
45+ method :: IParser ImportMethod
46+ method = try $ do whitespace
47+ as' <|> importing'
48+
50 as' :: IParser ImportMethod
49 as' :: IParser ImportMethod
50+ as' = do
51+ reserved "as"
52+ whitespace
51− as' = reserved "as" >> whitespace >> As <$> capVar <?> "alias for module"
53+ As <$> capVar <?> "alias for module"
52
54
53 importing' :: IParser ImportMethod
55 importing' :: IParser ImportMethod
56+ importing' =
57+ parens (choice [ const (Hiding []) <$> string ".."
58+ , Importing <$> varList
54− importing' = Importing <$> varList <?> "listing of imported values (x,y,z)"
59+ ] <?> "listing of imported values (x,y,z)")