{"action":"closed","issue":{"url":"https://api.github.com/repos/k-bx/protocol-buffers/issues/13","labels_url":"https://api.github.com/repos/k-bx/protocol-buffers/issues/13/labels{/name}","comments_url":"https://api.github.com/repos/k-bx/protocol-buffers/issues/13/comments","events_url":"https://api.github.com/repos/k-bx/protocol-buffers/issues/13/events","html_url":"https://github.com/k-bx/protocol-buffers/issues/13","id":118301074,"number":13,"title":"hprotoc incompatible with latest haskell-src-exts (1.17.0)","user":{"login":"ghorn","id":375331,"avatar_url":"https://avatars.githubusercontent.com/u/375331?v=3","gravatar_id":"","url":"https://api.github.com/users/ghorn","html_url":"https://github.com/ghorn","followers_url":"https://api.github.com/users/ghorn/followers","following_url":"https://api.github.com/users/ghorn/following{/other_user}","gists_url":"https://api.github.com/users/ghorn/gists{/gist_id}","starred_url":"https://api.github.com/users/ghorn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ghorn/subscriptions","organizations_url":"https://api.github.com/users/ghorn/orgs","repos_url":"https://api.github.com/users/ghorn/repos","events_url":"https://api.github.com/users/ghorn/events{/privacy}","received_events_url":"https://api.github.com/users/ghorn/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-11-23T00:29:33Z","updated_at":"2015-12-09T18:24:45Z","closed_at":"2015-12-09T18:24:45Z","body":"The current constraint is `>= 1.16.0`, and it builds with `1.16.0.1` fine. With `1.17.0`, I get these errors:\r\n\r\n```\r\n[13 of 13] Compiling Text.ProtocolBuffers.ProtoCompile.Gen ( Text/ProtocolBuffers/ProtoCompile/Gen.hs, dist/build/Text/ProtocolBuffers/ProtoCompile/Gen.o )\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:141:62:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the sixth argument of ‘Match’, namely ‘noWhere’\r\n    In the expression:\r\n      Match src (Ident s) p Nothing (UnGuardedRhs r) noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:170:43:\r\n    Couldn't match expected type ‘ImportSpec’\r\n                with actual type ‘Name -> ImportSpec’\r\n    Probable cause: ‘IAbs’ is applied to too few arguments\r\n    In the expression: IAbs (Ident (mName (baseName pn)))\r\n    In the expression: [IAbs (Ident (mName (baseName pn)))]\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:170:49:\r\n    Couldn't match expected type ‘Namespace’ with actual type ‘Name’\r\n    In the first argument of ‘IAbs’, namely\r\n      ‘(Ident (mName (baseName pn)))’\r\n    In the expression: IAbs (Ident (mName (baseName pn)))\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:187:27:\r\n    Couldn't match expected type ‘Name -> ImportSpec’\r\n                with actual type ‘ImportSpec’\r\n    The function ‘IVar’ is applied to two arguments,\r\n    but its type ‘Name -> ImportSpec’ has only one\r\n    In the expression: IVar NoNamespace (Ident (fName (baseName' pfn)))\r\n    In the expression:\r\n      [IVar NoNamespace (Ident (fName (baseName' pfn)))]\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:187:32:\r\n    Couldn't match expected type ‘Name’ with actual type ‘Namespace’\r\n    In the first argument of ‘IVar’, namely ‘NoNamespace’\r\n    In the expression: IVar NoNamespace (Ident (fName (baseName' pfn)))\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:406:27:\r\n    Couldn't match expected type ‘QName -> ExportSpec’\r\n                with actual type ‘ExportSpec’\r\n    Possible cause: ‘EVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(EVar NoNamespace . unqualFName . fieldName)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:406:32:\r\n    Couldn't match expected type ‘QName’ with actual type ‘Namespace’\r\n    In the first argument of ‘EVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:407:28:\r\n    Couldn't match expected type ‘QName -> b’\r\n                with actual type ‘ExportSpec’\r\n    Relevant bindings include\r\n      exportNames :: [b]\r\n        (bound at Text/ProtocolBuffers/ProtoCompile/Gen.hs:407:9)\r\n    Possible cause: ‘EVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(EVar NoNamespace . UnQual . Ident)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:407:33:\r\n    Couldn't match expected type ‘QName’ with actual type ‘Namespace’\r\n    In the first argument of ‘EVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:415:39:\r\n    Couldn't match expected type ‘ImportSpec’\r\n                with actual type ‘Name -> ImportSpec’\r\n    Probable cause: ‘IAbs’ is applied to too few arguments\r\n    In the expression: IAbs (Ident \"FileDescriptorProto\")\r\n    In the expression: [IAbs (Ident \"FileDescriptorProto\")]\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:415:45:\r\n    Couldn't match expected type ‘Namespace’ with actual type ‘Name’\r\n    In the first argument of ‘IAbs’, namely\r\n      ‘(Ident \"FileDescriptorProto\")’\r\n    In the expression: IAbs (Ident \"FileDescriptorProto\")\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:417:39:\r\n    Couldn't match expected type ‘ImportSpec’\r\n                with actual type ‘Name -> ImportSpec’\r\n    Probable cause: ‘IAbs’ is applied to too few arguments\r\n    In the expression: IAbs (Ident \"ProtoInfo\")\r\n    In the expression: [IAbs (Ident \"ProtoInfo\")]\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:417:45:\r\n    Couldn't match expected type ‘Namespace’ with actual type ‘Name’\r\n    In the first argument of ‘IAbs’, namely ‘(Ident \"ProtoInfo\")’\r\n    In the expression: IAbs (Ident \"ProtoInfo\")\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:419:39:\r\n    Couldn't match expected type ‘Name -> ImportSpec’\r\n                with actual type ‘ImportSpec’\r\n    The function ‘IVar’ is applied to two arguments,\r\n    but its type ‘Name -> ImportSpec’ has only one\r\n    In the expression: IVar NoNamespace (Ident \"wireGet,getFromBS\")\r\n    In the expression: [IVar NoNamespace (Ident \"wireGet,getFromBS\")]\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:419:44:\r\n    Couldn't match expected type ‘Name’ with actual type ‘Namespace’\r\n    In the first argument of ‘IVar’, namely ‘NoNamespace’\r\n    In the expression: IVar NoNamespace (Ident \"wireGet,getFromBS\")\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:425:61:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘PatBind’, namely ‘noWhere’\r\n    In the expression:\r\n      PatBind\r\n        src\r\n        (PApp (local \"protoInfo\") [])\r\n        (UnGuardedRhs $ preludevar \"read\" $$ litStr (show pri))\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:433:69:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘PatBind’, namely ‘noWhere’\r\n    In the expression:\r\n      PatBind\r\n        src\r\n        (PApp (local \"fileDescriptorProto\") [])\r\n        (UnGuardedRhs\r\n         $ pvar \"getFromBS\" $$ Paren (pvar \"wireGet\" $$ litInt' 11)\r\n           $$ Paren (pvar \"pack\" $$ litStr (LC.unpack bs)))\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:465:79:\r\n    Couldn't match expected type ‘ExportSpec’\r\n                with actual type ‘QName -> ExportSpec’\r\n    Probable cause: ‘EAbs’ is applied to too few arguments\r\n    In the expression: EAbs un\r\n    In the first argument of ‘Just’, namely ‘[EAbs un]’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:465:84:\r\n    Couldn't match expected type ‘Namespace’ with actual type ‘QName’\r\n    In the first argument of ‘EAbs’, namely ‘un’\r\n    In the expression: EAbs un\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:474:27:\r\n    Couldn't match expected type ‘QName -> ExportSpec’\r\n                with actual type ‘ExportSpec’\r\n    Possible cause: ‘EVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(EVar NoNamespace . unqualFName . fieldName)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:474:32:\r\n    Couldn't match expected type ‘QName’ with actual type ‘Namespace’\r\n    In the first argument of ‘EVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:487:27:\r\n    Couldn't match expected type ‘QName -> ExportSpec’\r\n                with actual type ‘ExportSpec’\r\n    Possible cause: ‘EVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(EVar NoNamespace . unqualFName . fieldName)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:487:32:\r\n    Couldn't match expected type ‘QName’ with actual type ‘Namespace’\r\n    In the first argument of ‘EVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:504:27:\r\n    Couldn't match expected type ‘QName -> ExportSpec’\r\n                with actual type ‘ExportSpec’\r\n    Possible cause: ‘EVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(EVar NoNamespace . unqualFName . fieldName)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:504:32:\r\n    Couldn't match expected type ‘QName’ with actual type ‘Namespace’\r\n    In the first argument of ‘EVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:520:15:\r\n    Couldn't match expected type ‘QName -> ExportSpec’\r\n                with actual type ‘ExportSpec’\r\n    Possible cause: ‘EVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(EVar NoNamespace . unqualFName . stripPrefix . fieldName)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:520:20:\r\n    Couldn't match expected type ‘QName’ with actual type ‘Namespace’\r\n    In the first argument of ‘EVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘EVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:539:25:\r\n    Couldn't match expected type ‘Name -> ImportSpec’\r\n                with actual type ‘ImportSpec’\r\n    Possible cause: ‘IVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘IVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(IVar NoNamespace . Symbol)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:539:30:\r\n    Couldn't match expected type ‘Name’ with actual type ‘Namespace’\r\n    In the first argument of ‘IVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘IVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:540:31:\r\n    Couldn't match expected type ‘Name -> ImportSpec’\r\n                with actual type ‘ImportSpec’\r\n    Possible cause: ‘IVar’ is applied to too many arguments\r\n    In the first argument of ‘(.)’, namely ‘IVar NoNamespace’\r\n    In the first argument of ‘map’, namely\r\n      ‘(IVar NoNamespace . Symbol)’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:540:36:\r\n    Couldn't match expected type ‘Name’ with actual type ‘Namespace’\r\n    In the first argument of ‘IVar’, namely ‘NoNamespace’\r\n    In the first argument of ‘(.)’, namely ‘IVar NoNamespace’\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:579:23:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘PatBind’, namely ‘noWhere’\r\n    In the expression:\r\n      PatBind\r\n        src\r\n        (PApp (unqualFName . fieldName $ f) [])\r\n        (UnGuardedRhs\r\n           (pcon \"Key\" $$ litInt (getFieldId (fieldNumber f))\r\n            $$ litInt typeNumber\r\n            $$\r\n              maybe\r\n                (preludecon \"Nothing\")\r\n                (Paren . (preludecon \"Just\" $$) . (defToSyntax (typeCode f)))\r\n                (hsDefault f)))\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:665:90:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the sixth argument of ‘Match’, namely ‘(BDecls subparsers)’\r\n    In the expression:\r\n      Match\r\n        src\r\n        (Ident \"textGet\")\r\n        []\r\n        Nothing\r\n        (UnGuardedRhs parser)\r\n        (BDecls subparsers)\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:771:82:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression: Alt src (litIntP' 10) (UnGuardedRhs g) noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:772:82:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression: Alt src (litIntP' 11) (UnGuardedRhs m) noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:773:82:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression: Alt src PWildCard (UnGuardedRhs e) noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:839:71:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression:\r\n      Alt src PWildCard (UnGuardedRhs wildcardAlt) noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:843:99:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘PatBind’, namely ‘(BDecls [])’\r\n    In the expression:\r\n      PatBind\r\n        src\r\n        (PTuple Boxed [patvar \"field'Number\", patvar \"wire'Type\"])\r\n        (UnGuardedRhs (pvar \"splitWireTag\" $$ lvar \"wire'Tag\"))\r\n        (BDecls [])\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:869:23:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression:\r\n      Alt\r\n        src\r\n        (litIntP . getWireTag $ wt1)\r\n        (UnGuardedRhs\r\n         $ getUnP $$ Var (mayQualName protoName (fieldName fi))\r\n           $$ lvar \"old'Self\")\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:873:23:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression:\r\n      Alt\r\n        src\r\n        (litIntP . getWireTag $ wt2)\r\n        (UnGuardedRhs\r\n         $ getP $$ Var (mayQualName protoName (fieldName fi))\r\n           $$ lvar \"old'Self\")\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:884:97:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression:\r\n      Alt\r\n        src\r\n        (litIntP . getWireTag $ wt1)\r\n        (UnGuardedRhs\r\n         $ preludevar \"fmap\"\r\n           $$\r\n             (Paren\r\n              $ Lambda src [PBangPat (patvar \"new'Field\")]\r\n                $ RecUpdate\r\n                    (lvar \"old'Self\")\r\n                    [FieldUpdate\r\n                       (unqualFName . fieldName $ fi) (labelUpdateUnpacked fi)])\r\n           $$\r\n             (Paren\r\n                (pvar \"wireGet\" $$ (litInt . getFieldType . typeCode $ fi))))\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:901:103:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the fourth argument of ‘Alt’, namely ‘noWhere’\r\n    In the expression:\r\n      Alt\r\n        src\r\n        (litIntP . getWireTag $ wt2)\r\n        (UnGuardedRhs\r\n         $ preludevar \"fmap\"\r\n           $$\r\n             (Paren\r\n              $ Lambda src [PBangPat (patvar \"new'Field\")]\r\n                $ RecUpdate\r\n                    (lvar \"old'Self\")\r\n                    [FieldUpdate\r\n                       (unqualFName . fieldName $ fi) (labelUpdatePacked fi)])\r\n           $$\r\n             (Paren\r\n                (pvar \"wireGetPacked\" $$ (litInt . getFieldType . typeCode $ fi))))\r\n        noWhere\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:912:119:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the sixth argument of ‘Match’, namely ‘whereCalcSize’\r\n    In the expression:\r\n      Match\r\n        src\r\n        (Ident \"wireSize\")\r\n        [patvar \"ft'\", PAsPat (Ident \"self'\") (PParen mine)]\r\n        Nothing\r\n        sizeCases\r\n        whereCalcSize\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:913:118:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the sixth argument of ‘Match’, namely ‘wherePutFields’\r\n    In the expression:\r\n      Match\r\n        src\r\n        (Ident \"wirePut\")\r\n        [patvar \"ft'\", PAsPat (Ident \"self'\") (PParen mine)]\r\n        Nothing\r\n        putCases\r\n        wherePutFields\r\n\r\nText/ProtocolBuffers/ProtoCompile/Gen.hs:914:80:\r\n    Couldn't match expected type ‘Maybe Binds’ with actual type ‘Binds’\r\n    In the sixth argument of ‘Match’, namely ‘whereDecls’\r\n    In the expression:\r\n      Match\r\n        src (Ident \"wireGet\") [patvar \"ft'\"] Nothing getCases whereDecls\r\n```"}}