git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge master
9a5c707Gary Burgess
purescript.cabal+1−1
@@ -1,5 +1,5 @@
1name: purescript
1name: purescript
2−version: 0.3.9
2+version: 0.3.9.1
3cabal-version: >=1.8
3cabal-version: >=1.8
4build-type: Simple
4build-type: Simple
5license: MIT
5license: MIT
src/Language/PureScript/Names.hs+1−1
@@ -52,7 +52,7 @@ instance Show ProperName where
52-- |
52-- |
53-- Module names
53-- Module names
54--
54--
55−data ModuleName = ModuleName ProperName deriving (Eq, Ord, Data, Typeable)
55+data ModuleName = ModuleName { runModuleName :: ProperName } deriving (Eq, Ord, Data, Typeable)
56
56
57instance Show ModuleName where
57instance Show ModuleName where
58 show (ModuleName name) = show name
58 show (ModuleName name) = show name
src/Language/PureScript/Parser/Common.hs+1−7
@@ -49,6 +49,7 @@ reservedPsNames = [ "data"
49 , "true"
49 , "true"
50 , "false"
50 , "false"
51 , "until"
51 , "until"
52+
52 ]
53 ]
53
54
54-- |
55-- |
@@ -121,13 +122,6 @@ reservedTypeNames :: [String]
121reservedTypeNames = [ "forall"
122reservedTypeNames = [ "forall"
122 , "where" ]
123 , "where" ]
123
124
124−-- |
125−-- A list of reserved identifiers for block statements
126−--
127−reservedStatementNames :: [String]
128−reservedStatementNames = [ "for"
129− , "return" ]
130−
131-- |
125-- |
132-- A list of reserved operators
126-- A list of reserved operators
133--
127--
src/Language/PureScript/TypeChecker.hs+2−1
@@ -43,13 +43,14 @@ addDataType moduleName name args dctors ctorKind = do
43 env <- getEnv
43 env <- getEnv
44 putEnv $ env { types = M.insert (moduleName, name) (ctorKind, Data) (types env) }
44 putEnv $ env { types = M.insert (moduleName, name) (ctorKind, Data) (types env) }
45 forM_ dctors $ \(dctor, maybeTy) ->
45 forM_ dctors $ \(dctor, maybeTy) ->
46− rethrow (("Error in data constructor " ++ show name ++ ":\n") ++) $
46+ rethrow (("Error in data constructor " ++ show dctor ++ ":\n") ++) $
47 addDataConstructor moduleName name args dctor maybeTy
47 addDataConstructor moduleName name args dctor maybeTy
48
48
49addDataConstructor :: ModuleName -> ProperName -> [String] -> ProperName -> Maybe Type -> Check ()
49addDataConstructor :: ModuleName -> ProperName -> [String] -> ProperName -> Maybe Type -> Check ()
50addDataConstructor moduleName name args dctor maybeTy = do
50addDataConstructor moduleName name args dctor maybeTy = do
51 env <- getEnv
51 env <- getEnv
52 dataConstructorIsNotDefined moduleName dctor
52 dataConstructorIsNotDefined moduleName dctor
53+ when (runModuleName moduleName == dctor) $ throwError "A data constructor may not have the same name as its enclosing module."
53 let retTy = foldl TypeApp (TypeConstructor (Qualified (Just moduleName) name)) (map TypeVar args)
54 let retTy = foldl TypeApp (TypeConstructor (Qualified (Just moduleName) name)) (map TypeVar args)
54 let dctorTy = maybe retTy (flip function retTy) maybeTy
55 let dctorTy = maybe retTy (flip function retTy) maybeTy
55 let polyType = mkForAll args dctorTy
56 let polyType = mkForAll args dctorTy