git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge branch 'master' into pure11
commit4e144ce4917ff9d20f40588619638b46a4109ee3 authorAndy Arvanitis <andyarvanitis@gmail.com> dateWed 18 Nov 2015, 18:45 (11 years ago) parenta74e6e592bf4e9
4 files changed+15−9
CONTRIBUTORS.md+1 core-tests/tests/generic-deriving/Main.purs+2−2 purescript.cabal+1−1 src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+11−6
CONTRIBUTORS.md+1
@@ -57,6 +57,7 @@ This file lists the contributors to the PureScript compiler project, and the ter
5757- [@senju](https://github.com/senju) - My existing contributions and all future contributions until further notice are Copyright senju, and are licensed to the owners and users of the PureScript compiler project under the terms of the [MIT license](http://opensource.org/licenses/MIT).
5858<http://opensource.org/licenses/MIT>.
5959- [@soupi](https://github.com/soupi) (Gil Mizrahi) My existing contributions and all future contributions until further notice are Copyright Gil Mizrahi, and are licensed to the owners and users of the PureScript compiler project under the terms of the [MIT license](http://opensource.org/licenses/MIT).
60+- [@tfausak](https://github.com/tfausak) (Taylor Fausak) My existing contributions and all future contributions until further notice are Copyright Taylor Fausak, and are licensed to the owners and users of the PureScript compiler project under the terms of the [MIT license](http://opensource.org/licenses/MIT).
6061
6162### Companies
6263
core-tests/tests/generic-deriving/Main.purs+2−2
@@ -14,7 +14,7 @@ data A a
1414 = A Number String
1515 | B Int
1616 | C (Array (A a))
17− | D { a :: a }
17+ | D { "asgård" :: a }
1818 | E Void
1919
2020derive instance genericA :: (Generic b) => Generic (A b)
@@ -24,4 +24,4 @@ newtype X b = X b
2424derive instance genericX :: Generic (X String)
2525
2626main :: forall eff. Eff (console :: CONSOLE | eff) Unit
27−main = Control.Monad.Eff.Console.log (gShow (D { a: C [ A 1.0 "test", B 42, D { a: true } ] }))
27+main = Control.Monad.Eff.Console.log (gShow (D { "asgård": C [ A 1.0 "test", B 42, D { "asgård": true } ] }))
purescript.cabal+1−1
@@ -1,5 +1,5 @@
11name: purescript
2−version: 0.7.5.3
2+version: 0.7.6.1
33cabal-version: >=1.8
44build-type: Simple
55license: MIT
src/Language/PureScript/Sugar/TypeClasses/Deriving.hs+11−6
@@ -73,6 +73,9 @@ dataGeneric = ModuleName [ ProperName "Data", ProperName "Generic" ]
7373dataMaybe :: ModuleName
7474dataMaybe = ModuleName [ ProperName "Data", ProperName "Maybe" ]
7575
76+typesProxy :: ModuleName
77+typesProxy = ModuleName [ ProperName "Type", ProperName "Proxy" ]
78+
7679deriveGeneric :: (Functor m, MonadError MultipleErrors m, MonadSupply m) => ModuleName -> [Declaration] -> ProperName -> [Type] -> m [Declaration]
7780deriveGeneric mn ds tyConNm args = do
7881 tyCon <- findTypeDecl tyConNm ds
@@ -107,7 +110,7 @@ mkSpineFunction mn (DataDeclaration _ _ _ args) = lamCase "$x" <$> mapM mkCtorCl
107110 return $ CaseAlternative [ConstructorBinder (Qualified (Just mn) ctorName) (map VarBinder idents)] (Right (caseResult idents))
108111 where
109112 caseResult idents =
110− App (prodConstructor (StringLiteral . runProperName $ ctorName))
113+ App (prodConstructor (StringLiteral . showQualified runProperName $ Qualified (Just mn) ctorName))
111114 . ArrayLiteral
112115 $ zipWith toSpineFun (map (Var . Qualified Nothing) idents) tys
113116
@@ -121,19 +124,21 @@ mkSpineFunction mn (PositionedDeclaration _ _ d) = mkSpineFunction mn d
121124mkSpineFunction _ _ = internalError "mkSpineFunction: expected DataDeclaration"
122125
123126mkSignatureFunction :: ModuleName -> Declaration -> [Type] -> Expr
124−mkSignatureFunction _ (DataDeclaration _ _ tyArgs args) classArgs = lamNull . mkSigProd $ map mkProdClause args
127+mkSignatureFunction mn (DataDeclaration _ name tyArgs args) classArgs = lamNull . mkSigProd $ map mkProdClause args
125128 where
126129 mkSigProd :: [Expr] -> Expr
127− mkSigProd = App (Constructor (Qualified (Just dataGeneric) (ProperName "SigProd"))) . ArrayLiteral
130+ mkSigProd = App (App (Constructor (Qualified (Just dataGeneric) (ProperName "SigProd")))
131+ (StringLiteral (showQualified runProperName (Qualified (Just mn) name)))
132+ ) . ArrayLiteral
128133
129134 mkSigRec :: [Expr] -> Expr
130135 mkSigRec = App (Constructor (Qualified (Just dataGeneric) (ProperName "SigRecord"))) . ArrayLiteral
131136
132137 proxy :: Type -> Type
133− proxy = TypeApp (TypeConstructor (Qualified (Just dataGeneric) (ProperName "Proxy")))
138+ proxy = TypeApp (TypeConstructor (Qualified (Just typesProxy) (ProperName "Proxy")))
134139
135140 mkProdClause :: (ProperName, [Type]) -> Expr
136− mkProdClause (ctorName, tys) = ObjectLiteral [ ("sigConstructor", StringLiteral (runProperName ctorName))
141+ mkProdClause (ctorName, tys) = ObjectLiteral [ ("sigConstructor", StringLiteral (showQualified runProperName (Qualified (Just mn) ctorName)))
137142 , ("sigValues", ArrayLiteral . map (mkProductSignature . instantiate) $ tys)
138143 ]
139144
@@ -168,7 +173,7 @@ mkFromSpineFunction mn (DataDeclaration _ _ _ args) = lamCase "$x" <$> (addCatch
168173 mkAlternative :: (ProperName, [Type]) -> m CaseAlternative
169174 mkAlternative (ctorName, tys) = do
170175 idents <- replicateM (length tys) (fmap Ident freshName)
171− return $ CaseAlternative [ prodBinder [ StringBinder (runProperName ctorName), ArrayBinder (map VarBinder idents)]]
176+ return $ CaseAlternative [ prodBinder [ StringBinder (showQualified runProperName (Qualified (Just mn) ctorName)), ArrayBinder (map VarBinder idents)]]
172177 . Right
173178 $ liftApplicative (mkJust $ Constructor (Qualified (Just mn) ctorName))
174179 (zipWith fromSpineFun (map (Var . Qualified Nothing) idents) tys)