hprotoc 2.4.10 → 2.4.11
raw patch · 2 files changed
+46/−32 lines, 2 filesdep ~haskell-src-extsdep ~protocol-buffersdep ~protocol-buffers-descriptornew-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: haskell-src-exts, protocol-buffers, protocol-buffers-descriptor
API changes (from Hackage documentation)
Files
- Text/ProtocolBuffers/ProtoCompile/Gen.hs +38/−24
- hprotoc.cabal +8/−8
Text/ProtocolBuffers/ProtoCompile/Gen.hs view
@@ -577,7 +577,10 @@ descriptorBootModule di = let protoName = descName di un = unqualName protoName- classes = [prelude "Show",prelude "Eq",prelude "Ord",prelude "Typeable",prelude "Data", prelude "Generic"+ classes = [prelude "Show",prelude "Eq",prelude "Ord",prelude "Data", prelude "Generic"+#if __GLASGOW_HASKELL__ < 780+ ,prelude "Typeable"+#endif ,private "Mergeable",private "Default" ,private "Wire",private "GPB",private "ReflectDescriptor" , private "TextType", private "TextMsg"@@ -586,7 +589,12 @@ ++ if storeUnknown di then [private "UnknownMessage"] else [] instMesAPI = InstDecl () Nothing (mkSimpleIRule (private "MessageAPI") [TyVar () (Ident () "msg'"), TyParen () (TyFun () (TyVar () (Ident () "msg'")) (TyCon () un)), (TyCon () un)]) Nothing- dataDecl = DataDecl () (DataType ()) Nothing (DHead () (baseIdent protoName)) [] mzero+ dataDecl = DataDecl () (DataType ()) Nothing (DHead () (baseIdent protoName)) [] $+#if __GLASGOW_HASKELL__ >= 780+ pure derivesTypeable+#else+ mzero+#endif mkInst s = InstDecl () Nothing (mkSimpleIRule s [TyCon () un]) Nothing eabs = EAbs () (NoNamespace ()) un in Module () (Just (ModuleHead () (ModuleName () (fqMod protoName)) Nothing (Just (ExportSpecList () [eabs])))) (modulePragmas $ makeLenses di) minimalImports@@ -1003,17 +1011,24 @@ -- wirePut generation putCases = UnGuardedRhs () $ cases (lvar "put'Fields")- (Do () [ Qualifier () $ pvar "putSize" $$- (Paren () $ foldl' (App ()) (pvar "wireSize") [ litInt' 10 , lvar "self'" ])- , Qualifier () $ lvar "put'Fields" ])+ (lvar "put'FieldsSized") (pvar "wirePutErr" $$ lvar "ft'" $$ lvar "self'")- wherePutFields = Just (BDecls () [defun "put'Fields" [] (Do () putStmts)])- putStmts = putStmtsContent- where putStmtsContent | null putStmtsAll = [Qualifier () $ preludevar "return" $$ Con () (Special () (UnitCon ()))]- | otherwise = putStmtsAll- putStmtsAll | Just v <- mUnknown = putStmtsListExt ++ [ Qualifier () $ pvar "wirePutUnknownField" $$ v ]- | otherwise = putStmtsListExt- putStmtsListExt | Just v <- mExt = sortedPutStmtsList ++ [ Qualifier () $ pvar "wirePutExtField" $$ v ]+ wherePutFields = Just (BDecls ()+ [ defun "put'Fields" [] (pvar "sequencePutWithSize" $$ List () putStmts)+ , defun "put'FieldsSized" [] $+ Let () (BDecls ()+ [ defun "size'" [] (preludevar "fst" $$ Paren () (pvar "runPutM" $$ lvar "put'Fields"))+ , defun "put'Size" []+ (Do () [ Qualifier () $ pvar "putSize" $$ lvar "size'"+ , Qualifier () $ preludevar "return" $$ Paren () (pvar "size'WireSize" $$ lvar "size'")+ ])+ ])+ (pvar "sequencePutWithSize" $$ List () [lvar "put'Size", lvar "put'Fields"])+ ])+ putStmts = putStmtsAll+ where putStmtsAll | Just v <- mUnknown = putStmtsListExt ++ [ pvar "wirePutUnknownFieldWithSize" $$ v ]+ | otherwise = putStmtsListExt+ putStmtsListExt | Just v <- mExt = sortedPutStmtsList ++ [ pvar "wirePutExtFieldWithSize" $$ v ] | otherwise = sortedPutStmtsList sortedPutStmtsList = map snd -- remove number . sortBy (compare `on` fst) -- sort by number@@ -1021,23 +1036,21 @@ putStmtsList = concat . zipWith toPut vars . F.toList $ fmap Left fieldInfos >< fmap Right oneofInfos toPut var (Left fi)- = let f = if isPacked fi then "wirePutPacked"- else if isRequired fi then "wirePutReq"- else if canRepeat fi then "wirePutRep"- else "wirePutOpt"+ = let f = if isPacked fi then "wirePutPackedWithSize"+ else if isRequired fi then "wirePutReqWithSize"+ else if canRepeat fi then "wirePutRepWithSize"+ else "wirePutOptWithSize" in [(fieldNumber fi,- Qualifier () $ foldl' (App ()) (pvar f) [ litInt (getWireTag (wireTag fi)) , litInt (getFieldType (typeCode fi)) , var] )]- toPut var (Right oi) = map (toPut' var) . F.toList . oneofFields $ oi- where toPut' var r@(n,fi)- = let f = "wirePutOpt"+ toPut var (Right oi) = map toPut' . F.toList . oneofFields $ oi+ where toPut' r@(_n,fi)+ = let f = "wirePutOptWithSize" var' = mkOp "Prelude'.=<<" (Var () (qualName (snd (oneofGet r)))) var in (fieldNumber fi- ,Qualifier () $- foldl' (App ()) (pvar f) [ litInt (getWireTag (wireTag fi))+ , foldl' (App ()) (pvar f) [ litInt (getWireTag (wireTag fi)) , litInt (getFieldType (typeCode fi)) , var'] )@@ -1171,7 +1184,7 @@ in InstDecl () Nothing (mkSimpleIRule (private "Wire") [TyCon () me]) . Just . map (InsDecl ()) $ [ FunBind () [Match () (Ident () "wireSize") [patvar "ft'",PAsPat () (Ident () "self'") (PParen () mine)] sizeCases whereCalcSize]- , FunBind () [Match () (Ident () "wirePut") [patvar "ft'",PAsPat () (Ident () "self'") (PParen () mine)] putCases wherePutFields]+ , FunBind () [Match () (Ident () "wirePutWithSize") [patvar "ft'",PAsPat () (Ident () "self'") (PParen () mine)] putCases wherePutFields] , FunBind () [Match () (Ident () "wireGet") [patvar "ft'"] getCases whereDecls] ] @@ -1207,9 +1220,10 @@ mkDeriving xs = Deriving () (map (\x -> mkSimpleIRule x []) xs) #endif -derives,derivesEnum :: Deriving ()+derives,derivesEnum,derivesTypeable :: Deriving () derives = mkDeriving $ map prelude ["Show","Eq","Ord","Typeable","Data","Generic"] derivesEnum = mkDeriving $ map prelude ["Read","Show","Eq","Ord","Typeable","Data","Generic"]+derivesTypeable = mkDeriving $ [prelude "Typeable"] -- All of these type names are also exported by Text.ProtocolBuffers.Header via Text.ProtocolBuffers.Basic useType :: Int -> Maybe String
hprotoc.cabal view
@@ -1,12 +1,12 @@ name: hprotoc-version: 2.4.10+version: 2.4.11 cabal-version: >= 1.6 build-type: Simple license: BSD3 license-file: LICENSE copyright: (c) 2008-2015 Christopher Edward Kuklewicz author: Christopher Edward Kuklewicz-maintainer: Kostiantyn Rybnikov <k-bx@k-bx.com>+maintainer: Timo von Holtz <tvh@tvholtz.de>, Kostiantyn Rybnikov <k-bx@k-bx.com> homepage: https://github.com/k-bx/protocol-buffers package-url: http://hackage.haskell.org/package/hprotoc synopsis: Parse Google Protocol Buffer specifications@@ -20,8 +20,8 @@ location: git://github.com/k-bx/protocol-buffers.git Executable hprotoc- build-depends: protocol-buffers == 2.4.10,- protocol-buffers-descriptor == 2.4.10+ build-depends: protocol-buffers == 2.4.11,+ protocol-buffers-descriptor == 2.4.11 Main-Is: Text/ProtocolBuffers/ProtoCompile.hs Hs-Source-Dirs: ., protoc-gen-haskell@@ -55,7 +55,7 @@ Text.ProtocolBuffers.ProtoCompile.Resolve extensions: DeriveDataTypeable, EmptyDataDecls,- FlexibleContexts + FlexibleContexts, FlexibleInstances, FunctionalDependencies, GADTs,@@ -69,8 +69,8 @@ TypeSynonymInstances Library- build-depends: protocol-buffers == 2.4.10,- protocol-buffers-descriptor == 2.4.10+ build-depends: protocol-buffers == 2.4.11,+ protocol-buffers-descriptor == 2.4.11 Hs-Source-Dirs: ., protoc-gen-haskell build-tools: alex@@ -83,7 +83,7 @@ containers, directory >= 1.0.0.1, filepath >= 1.1.0.0,- haskell-src-exts >= 1.16.0 && < 1.21,+ haskell-src-exts >= 1.18 && < 1.21, mtl, parsec, utf8-string