hs2ats 0.2.0.4 → 0.2.1.0
raw patch · 2 files changed
+14/−9 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- hs2ats.cabal +1/−1
- src/Language/ATS/Generate.hs +13/−8
hs2ats.cabal view
@@ -1,5 +1,5 @@ name: hs2ats-version: 0.2.0.4+version: 0.2.1.0 synopsis: Create ATS types from Haskell types description: This package enables scanning Haskell source files for data types and then generating [ATS](http://www.ats-lang.org/) types from them. homepage: https://github.com/vmchale/hs2ats#readme
src/Language/ATS/Generate.hs view
@@ -35,6 +35,9 @@ pattern QNamed :: l -> l -> String -> QName l pattern QNamed x y s = UnQual x (Ident y s) +pattern QStorable :: l -> l -> QName l+pattern QStorable x y = UnQual x (Ident y "StorableWrapper")+ pattern EmptyQualCon :: l -> ConDecl l -> QualConDecl l pattern EmptyQualCon x cd = QualConDecl x Nothing Nothing cd @@ -58,15 +61,17 @@ toStringATS' (QNamed _ _ "CDouble") = Right ATS.Double toStringATS' _ = unsupported "toStringATS'" +-- TODO ignore StorableWrapper :) typeToType :: HS.Type a -> ErrM ATS.Type-typeToType (TyCon _ qn) = toStringATS' qn-typeToType (TyVar _ n) = Right $ Named $ Unqualified (toStringATS n)-typeToType (TyApp _ (TyCon _ qn) t'@TyCon{}) = Dependent <$> (Unqualified <$> qnameToString qn) <*> (pure <$> typeToType t')-typeToType (TyApp _ t@TyApp{} t'@TyCon{}) = over typeCallArgs <$> fmap (:) (typeToType t') <*> typeToType t-typeToType (TyParen _ t) = typeToType t-typeToType (TyBang _ _ _ t) = typeToType t-typeToType (TyList _ t) = Dependent (Unqualified "List_vt") <$> (pure <$> typeToType t)-typeToType _ = Left $ Unsupported "typeToType"+typeToType (TyCon _ qn) = toStringATS' qn+typeToType (TyVar _ n) = Right $ Named $ Unqualified (toStringATS n)+typeToType (TyApp _ (TyCon _ QStorable{}) t') = typeToType t'+typeToType (TyApp _ (TyCon _ qn) t'@TyCon{}) = Dependent <$> (Unqualified <$> qnameToString qn) <*> (pure <$> typeToType t')+typeToType (TyApp _ t@TyApp{} t'@TyCon{}) = over typeCallArgs <$> fmap (:) (typeToType t') <*> typeToType t+typeToType (TyParen _ t) = typeToType t+typeToType (TyBang _ _ _ t) = typeToType t+typeToType (TyList _ t) = Dependent (Unqualified "List_vt") <$> (pure <$> typeToType t)+typeToType _ = Left $ Unsupported "typeToType" fieldDeclToType :: FieldDecl a -> ErrM (String, ATS.Type) fieldDeclToType (FieldDecl _ [n] t) = (,) (toStringATS n) <$> typeToType t