packages feed

servant-foreign 0.7.1 → 0.8

raw patch · 3 files changed

+63/−62 lines, 3 filesdep ~servantPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: servant

API changes (from Hackage documentation)

- Servant.Foreign.Internal: instance forall k (ftype :: k). Servant.Foreign.Internal.HasForeignType Servant.Foreign.Internal.NoTypes () ftype
- Servant.Foreign.Internal: instance forall k (lang :: k) ftype sublayout (name :: GHC.Types.Symbol) (context :: [GHC.Types.*]). Servant.Foreign.Internal.HasForeign lang ftype sublayout => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.WithNamedContext.WithNamedContext name context sublayout)
- Servant.Foreign.Internal: instance forall k (lang :: k) ftype sublayout. Servant.Foreign.Internal.HasForeign lang ftype sublayout => Servant.Foreign.Internal.HasForeign lang ftype (Data.Vault.Lazy.Vault Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (lang :: k) ftype sublayout. Servant.Foreign.Internal.HasForeign lang ftype sublayout => Servant.Foreign.Internal.HasForeign lang ftype (Network.HTTP.Types.Version.HttpVersion Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (lang :: k) ftype sublayout. Servant.Foreign.Internal.HasForeign lang ftype sublayout => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.IsSecure.IsSecure Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (lang :: k) ftype sublayout. Servant.Foreign.Internal.HasForeign lang ftype sublayout => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.RemoteHost.RemoteHost Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (path :: GHC.Types.Symbol) (lang :: k) ftype sublayout. (GHC.TypeLits.KnownSymbol path, Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (path Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (sym :: GHC.Types.Symbol) (lang :: k) ftype a sublayout. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype [a], Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.QueryParam.QueryParams sym a Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (sym :: GHC.Types.Symbol) (lang :: k) ftype a sublayout. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.Header.Header sym a Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k (sym :: GHC.Types.Symbol) (lang :: k) ftype sublayout. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype GHC.Types.Bool, Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k k1 (list :: [GHC.Types.*]) (lang :: k1) ftype (a :: k) sublayout. (Servant.Foreign.Internal.Elem Servant.API.ContentTypes.JSON list, Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.ReqBody.ReqBody list a Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (lang :: k1) ftype (a :: k) sublayout. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.QueryParam.QueryParam sym a Servant.API.Sub.:> sublayout)
- Servant.Foreign.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (lang :: k1) ftype (t :: k) sublayout. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype t, Servant.Foreign.Internal.HasForeign lang ftype sublayout) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.Capture.Capture sym t Servant.API.Sub.:> sublayout)
+ Servant.Foreign.Internal: instance forall k (ftype :: k). Servant.Foreign.Internal.HasForeignType Servant.Foreign.Internal.NoTypes Servant.API.ContentTypes.NoContent ftype
+ Servant.Foreign.Internal: instance forall k (lang :: k) ftype api (name :: GHC.Types.Symbol) (context :: [GHC.Types.*]). Servant.Foreign.Internal.HasForeign lang ftype api => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.WithNamedContext.WithNamedContext name context api)
+ Servant.Foreign.Internal: instance forall k (lang :: k) ftype api. Servant.Foreign.Internal.HasForeign lang ftype api => Servant.Foreign.Internal.HasForeign lang ftype (Data.Vault.Lazy.Vault Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (lang :: k) ftype api. Servant.Foreign.Internal.HasForeign lang ftype api => Servant.Foreign.Internal.HasForeign lang ftype (Network.HTTP.Types.Version.HttpVersion Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (lang :: k) ftype api. Servant.Foreign.Internal.HasForeign lang ftype api => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.IsSecure.IsSecure Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (lang :: k) ftype api. Servant.Foreign.Internal.HasForeign lang ftype api => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.RemoteHost.RemoteHost Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (path :: GHC.Types.Symbol) (lang :: k) ftype api. (GHC.TypeLits.KnownSymbol path, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (path Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (sym :: GHC.Types.Symbol) (lang :: k) ftype a api. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype [a], Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.QueryParam.QueryParams sym a Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (sym :: GHC.Types.Symbol) (lang :: k) ftype a api. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.Header.Header sym a Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k (sym :: GHC.Types.Symbol) (lang :: k) ftype api. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype GHC.Types.Bool, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.QueryParam.QueryFlag sym Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k k1 (list :: [GHC.Types.*]) (lang :: k1) ftype (a :: k) api. (Servant.Foreign.Internal.Elem Servant.API.ContentTypes.JSON list, Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.ReqBody.ReqBody list a Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (lang :: k1) ftype (a :: k) api. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype a, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.QueryParam.QueryParam sym a Servant.API.Sub.:> api)
+ Servant.Foreign.Internal: instance forall k k1 (sym :: GHC.Types.Symbol) (lang :: k1) ftype (t :: k) api. (GHC.TypeLits.KnownSymbol sym, Servant.Foreign.Internal.HasForeignType lang ftype t, Servant.Foreign.Internal.HasForeign lang ftype api) => Servant.Foreign.Internal.HasForeign lang ftype (Servant.API.Capture.Capture sym t Servant.API.Sub.:> api)
- Servant.Foreign: _Cap :: forall f_ajmm f_ajpZ. Prism (SegmentType f_ajpZ) (SegmentType f_ajmm) (Arg f_ajpZ) (Arg f_ajmm)
+ Servant.Foreign: _Cap :: forall f_ajmH f_ajqk. Prism (SegmentType f_ajqk) (SegmentType f_ajmH) (Arg f_ajqk) (Arg f_ajmH)
- Servant.Foreign: _HeaderArg :: forall f_ajEG. Prism' (HeaderArg f_ajEG) (Arg f_ajEG)
+ Servant.Foreign: _HeaderArg :: forall f_ajF1. Prism' (HeaderArg f_ajF1) (Arg f_ajF1)
- Servant.Foreign: _ReplaceHeaderArg :: forall f_ajEG. Prism' (HeaderArg f_ajEG) (Arg f_ajEG, Text)
+ Servant.Foreign: _ReplaceHeaderArg :: forall f_ajF1. Prism' (HeaderArg f_ajF1) (Arg f_ajF1, Text)
- Servant.Foreign: _Static :: forall f_ajmm. Prism' (SegmentType f_ajmm) PathSegment
+ Servant.Foreign: _Static :: forall f_ajmH. Prism' (SegmentType f_ajmH) PathSegment
- Servant.Foreign: argName :: forall f_ajiT. Lens' (Arg f_ajiT) PathSegment
+ Servant.Foreign: argName :: forall f_ajje. Lens' (Arg f_ajje) PathSegment
- Servant.Foreign: argType :: forall f_ajiT f_ajm7. Lens (Arg f_ajiT) (Arg f_ajm7) f_ajiT f_ajm7
+ Servant.Foreign: argType :: forall f_ajje f_ajms. Lens (Arg f_ajje) (Arg f_ajms) f_ajje f_ajms
- Servant.Foreign: class HasForeign lang ftype (layout :: *) where type Foreign ftype layout :: * where {
+ Servant.Foreign: class HasForeign lang ftype (api :: *) where type Foreign ftype api :: * where {
- Servant.Foreign: foreignFor :: HasForeign lang ftype layout => Proxy lang -> Proxy ftype -> Proxy layout -> Req ftype -> Foreign ftype layout
+ Servant.Foreign: foreignFor :: HasForeign lang ftype api => Proxy lang -> Proxy ftype -> Proxy api -> Req ftype -> Foreign ftype api
- Servant.Foreign: headerArg :: forall f_ajEG f_ajHZ. Lens (HeaderArg f_ajEG) (HeaderArg f_ajHZ) (Arg f_ajEG) (Arg f_ajHZ)
+ Servant.Foreign: headerArg :: forall f_ajF1 f_ajIk. Lens (HeaderArg f_ajF1) (HeaderArg f_ajIk) (Arg f_ajF1) (Arg f_ajIk)
- Servant.Foreign: path :: forall f_ajJG. Lens' (Url f_ajJG) (Path f_ajJG)
+ Servant.Foreign: path :: forall f_ajK1. Lens' (Url f_ajK1) (Path f_ajK1)
- Servant.Foreign: queryArgName :: forall f_ajAI f_ajEq. Lens (QueryArg f_ajAI) (QueryArg f_ajEq) (Arg f_ajAI) (Arg f_ajEq)
+ Servant.Foreign: queryArgName :: forall f_ajB3 f_ajEL. Lens (QueryArg f_ajB3) (QueryArg f_ajEL) (Arg f_ajB3) (Arg f_ajEL)
- Servant.Foreign: queryArgType :: forall f_ajAI. Lens' (QueryArg f_ajAI) ArgType
+ Servant.Foreign: queryArgType :: forall f_ajB3. Lens' (QueryArg f_ajB3) ArgType
- Servant.Foreign: queryStr :: forall f_ajJG. Lens' (Url f_ajJG) [QueryArg f_ajJG]
+ Servant.Foreign: queryStr :: forall f_ajK1. Lens' (Url f_ajK1) [QueryArg f_ajK1]
- Servant.Foreign: reqBody :: forall f_ajNy. Lens' (Req f_ajNy) (Maybe f_ajNy)
+ Servant.Foreign: reqBody :: forall f_ajNT. Lens' (Req f_ajNT) (Maybe f_ajNT)
- Servant.Foreign: reqFuncName :: forall f_ajNy. Lens' (Req f_ajNy) FunctionName
+ Servant.Foreign: reqFuncName :: forall f_ajNT. Lens' (Req f_ajNT) FunctionName
- Servant.Foreign: reqHeaders :: forall f_ajNy. Lens' (Req f_ajNy) [HeaderArg f_ajNy]
+ Servant.Foreign: reqHeaders :: forall f_ajNT. Lens' (Req f_ajNT) [HeaderArg f_ajNT]
- Servant.Foreign: reqMethod :: forall f_ajNy. Lens' (Req f_ajNy) Method
+ Servant.Foreign: reqMethod :: forall f_ajNT. Lens' (Req f_ajNT) Method
- Servant.Foreign: reqReturnType :: forall f_ajNy. Lens' (Req f_ajNy) (Maybe f_ajNy)
+ Servant.Foreign: reqReturnType :: forall f_ajNT. Lens' (Req f_ajNT) (Maybe f_ajNT)
- Servant.Foreign: reqUrl :: forall f_ajNy. Lens' (Req f_ajNy) (Url f_ajNy)
+ Servant.Foreign: reqUrl :: forall f_ajNT. Lens' (Req f_ajNT) (Url f_ajNT)
- Servant.Foreign: type family Foreign ftype layout :: *;
+ Servant.Foreign: type family Foreign ftype api :: *;
- Servant.Foreign.Internal: _Cap :: forall f_ajmm f_ajpZ. Prism (SegmentType f_ajpZ) (SegmentType f_ajmm) (Arg f_ajpZ) (Arg f_ajmm)
+ Servant.Foreign.Internal: _Cap :: forall f_ajmH f_ajqk. Prism (SegmentType f_ajqk) (SegmentType f_ajmH) (Arg f_ajqk) (Arg f_ajmH)
- Servant.Foreign.Internal: _HeaderArg :: forall f_ajEG. Prism' (HeaderArg f_ajEG) (Arg f_ajEG)
+ Servant.Foreign.Internal: _HeaderArg :: forall f_ajF1. Prism' (HeaderArg f_ajF1) (Arg f_ajF1)
- Servant.Foreign.Internal: _ReplaceHeaderArg :: forall f_ajEG. Prism' (HeaderArg f_ajEG) (Arg f_ajEG, Text)
+ Servant.Foreign.Internal: _ReplaceHeaderArg :: forall f_ajF1. Prism' (HeaderArg f_ajF1) (Arg f_ajF1, Text)
- Servant.Foreign.Internal: _Segment :: forall f_ajq9 f_ajwH. Iso (Segment f_ajwH) (Segment f_ajq9) (SegmentType f_ajwH) (SegmentType f_ajq9)
+ Servant.Foreign.Internal: _Segment :: forall f_ajqu f_ajx2. Iso (Segment f_ajx2) (Segment f_ajqu) (SegmentType f_ajx2) (SegmentType f_ajqu)
- Servant.Foreign.Internal: _Static :: forall f_ajmm. Prism' (SegmentType f_ajmm) PathSegment
+ Servant.Foreign.Internal: _Static :: forall f_ajmH. Prism' (SegmentType f_ajmH) PathSegment
- Servant.Foreign.Internal: argName :: forall f_ajiT. Lens' (Arg f_ajiT) PathSegment
+ Servant.Foreign.Internal: argName :: forall f_ajje. Lens' (Arg f_ajje) PathSegment
- Servant.Foreign.Internal: argType :: forall f_ajiT f_ajm7. Lens (Arg f_ajiT) (Arg f_ajm7) f_ajiT f_ajm7
+ Servant.Foreign.Internal: argType :: forall f_ajje f_ajms. Lens (Arg f_ajje) (Arg f_ajms) f_ajje f_ajms
- Servant.Foreign.Internal: class HasForeign lang ftype (layout :: *) where type Foreign ftype layout :: * where {
+ Servant.Foreign.Internal: class HasForeign lang ftype (api :: *) where type Foreign ftype api :: * where {
- Servant.Foreign.Internal: foreignFor :: HasForeign lang ftype layout => Proxy lang -> Proxy ftype -> Proxy layout -> Req ftype -> Foreign ftype layout
+ Servant.Foreign.Internal: foreignFor :: HasForeign lang ftype api => Proxy lang -> Proxy ftype -> Proxy api -> Req ftype -> Foreign ftype api
- Servant.Foreign.Internal: headerArg :: forall f_ajEG f_ajHZ. Lens (HeaderArg f_ajEG) (HeaderArg f_ajHZ) (Arg f_ajEG) (Arg f_ajHZ)
+ Servant.Foreign.Internal: headerArg :: forall f_ajF1 f_ajIk. Lens (HeaderArg f_ajF1) (HeaderArg f_ajIk) (Arg f_ajF1) (Arg f_ajIk)
- Servant.Foreign.Internal: headerPattern :: forall f_ajEG. Traversal' (HeaderArg f_ajEG) Text
+ Servant.Foreign.Internal: headerPattern :: forall f_ajF1. Traversal' (HeaderArg f_ajF1) Text
- Servant.Foreign.Internal: path :: forall f_ajJG. Lens' (Url f_ajJG) (Path f_ajJG)
+ Servant.Foreign.Internal: path :: forall f_ajK1. Lens' (Url f_ajK1) (Path f_ajK1)
- Servant.Foreign.Internal: queryArgName :: forall f_ajAI f_ajEq. Lens (QueryArg f_ajAI) (QueryArg f_ajEq) (Arg f_ajAI) (Arg f_ajEq)
+ Servant.Foreign.Internal: queryArgName :: forall f_ajB3 f_ajEL. Lens (QueryArg f_ajB3) (QueryArg f_ajEL) (Arg f_ajB3) (Arg f_ajEL)
- Servant.Foreign.Internal: queryArgType :: forall f_ajAI. Lens' (QueryArg f_ajAI) ArgType
+ Servant.Foreign.Internal: queryArgType :: forall f_ajB3. Lens' (QueryArg f_ajB3) ArgType
- Servant.Foreign.Internal: queryStr :: forall f_ajJG. Lens' (Url f_ajJG) [QueryArg f_ajJG]
+ Servant.Foreign.Internal: queryStr :: forall f_ajK1. Lens' (Url f_ajK1) [QueryArg f_ajK1]
- Servant.Foreign.Internal: reqBody :: forall f_ajNy. Lens' (Req f_ajNy) (Maybe f_ajNy)
+ Servant.Foreign.Internal: reqBody :: forall f_ajNT. Lens' (Req f_ajNT) (Maybe f_ajNT)
- Servant.Foreign.Internal: reqFuncName :: forall f_ajNy. Lens' (Req f_ajNy) FunctionName
+ Servant.Foreign.Internal: reqFuncName :: forall f_ajNT. Lens' (Req f_ajNT) FunctionName
- Servant.Foreign.Internal: reqHeaders :: forall f_ajNy. Lens' (Req f_ajNy) [HeaderArg f_ajNy]
+ Servant.Foreign.Internal: reqHeaders :: forall f_ajNT. Lens' (Req f_ajNT) [HeaderArg f_ajNT]
- Servant.Foreign.Internal: reqMethod :: forall f_ajNy. Lens' (Req f_ajNy) Method
+ Servant.Foreign.Internal: reqMethod :: forall f_ajNT. Lens' (Req f_ajNT) Method
- Servant.Foreign.Internal: reqReturnType :: forall f_ajNy. Lens' (Req f_ajNy) (Maybe f_ajNy)
+ Servant.Foreign.Internal: reqReturnType :: forall f_ajNT. Lens' (Req f_ajNT) (Maybe f_ajNT)
- Servant.Foreign.Internal: reqUrl :: forall f_ajNy. Lens' (Req f_ajNy) (Url f_ajNy)
+ Servant.Foreign.Internal: reqUrl :: forall f_ajNT. Lens' (Req f_ajNT) (Url f_ajNT)
- Servant.Foreign.Internal: type family Foreign ftype layout :: *;
+ Servant.Foreign.Internal: type family Foreign ftype api :: *;

Files

servant-foreign.cabal view
@@ -1,5 +1,5 @@ name:                servant-foreign-version:             0.7.1+version:             0.8 synopsis:            Helpers for generating clients for servant APIs in any programming language description:   Helper types and functions for generating client functions for servant APIs in any programming language@@ -21,6 +21,7 @@   include/*.h   CHANGELOG.md   README.md+bug-reports:         http://github.com/haskell-servant/servant/issues source-repository head   type: git   location: http://github.com/haskell-servant/servant.git@@ -31,7 +32,7 @@                      , Servant.Foreign.Inflections   build-depends:       base       == 4.*                      , lens       == 4.*-                     , servant    == 0.7.*+                     , servant    == 0.8.*                      , text       >= 1.2  && < 1.3                      , http-types   hs-source-dirs:      src
src/Servant/Foreign/Internal.hs view
@@ -169,11 +169,11 @@ -- > getEndpoints api = listFromAPI (Proxy :: Proxy LangX) (Proxy :: Proxy Text) api -- -- > -- If language __X__ is dynamically typed then you can use--- > -- a predefined NoTypes parameter with the () output type:+-- > -- a predefined NoTypes parameter with the NoContent output type: ----- > getEndpoints :: (HasForeign NoTypes () api, GenerateList Text (Foreign () api))--- >              => Proxy api -> [Req ()]--- > getEndpoints api = listFromAPI (Proxy :: Proxy NoTypes) (Proxy :: Proxy ()) api+-- > getEndpoints :: (HasForeign NoTypes NoContent api, GenerateList Text (Foreign NoContent api))+-- >              => Proxy api -> [Req NoContent]+-- > getEndpoints api = listFromAPI (Proxy :: Proxy NoTypes) (Proxy :: Proxy NoContent) api -- > -- class HasForeignType lang ftype a where@@ -181,12 +181,12 @@  data NoTypes -instance HasForeignType NoTypes () ftype where-  typeFor _ _ _ = ()+instance HasForeignType NoTypes NoContent ftype where+  typeFor _ _ _ = NoContent -class HasForeign lang ftype (layout :: *) where-  type Foreign ftype layout :: *-  foreignFor :: Proxy lang -> Proxy ftype -> Proxy layout -> Req ftype -> Foreign ftype layout+class HasForeign lang ftype (api :: *) where+  type Foreign ftype api :: *+  foreignFor :: Proxy lang -> Proxy ftype -> Proxy api -> Req ftype -> Foreign ftype api  instance (HasForeign lang ftype a, HasForeign lang ftype b)   => HasForeign lang ftype (a :<|> b) where@@ -196,12 +196,12 @@          foreignFor lang ftype (Proxy :: Proxy a) req     :<|> foreignFor lang ftype (Proxy :: Proxy b) req -instance (KnownSymbol sym, HasForeignType lang ftype t, HasForeign lang ftype sublayout)-  => HasForeign lang ftype (Capture sym t :> sublayout) where-  type Foreign ftype (Capture sym a :> sublayout) = Foreign ftype sublayout+instance (KnownSymbol sym, HasForeignType lang ftype t, HasForeign lang ftype api)+  => HasForeign lang ftype (Capture sym t :> api) where+  type Foreign ftype (Capture sym a :> api) = Foreign ftype api    foreignFor lang Proxy Proxy req =-    foreignFor lang Proxy (Proxy :: Proxy sublayout) $+    foreignFor lang Proxy (Proxy :: Proxy api) $       req & reqUrl . path <>~ [Segment (Cap arg)]           & reqFuncName . _FunctionName %~ (++ ["by", str])     where@@ -224,9 +224,9 @@       method   = reflectMethod (Proxy :: Proxy method)       methodLC = toLower $ decodeUtf8 method -instance (KnownSymbol sym, HasForeignType lang ftype a, HasForeign lang ftype sublayout)-  => HasForeign lang ftype (Header sym a :> sublayout) where-  type Foreign ftype (Header sym a :> sublayout) = Foreign ftype sublayout+instance (KnownSymbol sym, HasForeignType lang ftype a, HasForeign lang ftype api)+  => HasForeign lang ftype (Header sym a :> api) where+  type Foreign ftype (Header sym a :> api) = Foreign ftype api    foreignFor lang Proxy Proxy req =     foreignFor lang Proxy subP $ req & reqHeaders <>~ [HeaderArg arg]@@ -235,14 +235,14 @@       arg   = Arg         { _argName = PathSegment hname         , _argType  = typeFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy a) }-      subP  = Proxy :: Proxy sublayout+      subP  = Proxy :: Proxy api -instance (KnownSymbol sym, HasForeignType lang ftype a, HasForeign lang ftype sublayout)-  => HasForeign lang ftype (QueryParam sym a :> sublayout) where-  type Foreign ftype (QueryParam sym a :> sublayout) = Foreign ftype sublayout+instance (KnownSymbol sym, HasForeignType lang ftype a, HasForeign lang ftype api)+  => HasForeign lang ftype (QueryParam sym a :> api) where+  type Foreign ftype (QueryParam sym a :> api) = Foreign ftype api    foreignFor lang Proxy Proxy req =-    foreignFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy sublayout) $+    foreignFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy api) $       req & reqUrl.queryStr <>~ [QueryArg arg Normal]     where       str = pack . symbolVal $ (Proxy :: Proxy sym)@@ -251,11 +251,11 @@         , _argType = typeFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy a) }  instance-  (KnownSymbol sym, HasForeignType lang ftype [a], HasForeign lang ftype sublayout)-  => HasForeign lang ftype (QueryParams sym a :> sublayout) where-  type Foreign ftype (QueryParams sym a :> sublayout) = Foreign ftype sublayout+  (KnownSymbol sym, HasForeignType lang ftype [a], HasForeign lang ftype api)+  => HasForeign lang ftype (QueryParams sym a :> api) where+  type Foreign ftype (QueryParams sym a :> api) = Foreign ftype api   foreignFor lang Proxy Proxy req =-    foreignFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy sublayout) $+    foreignFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy api) $       req & reqUrl.queryStr <>~ [QueryArg arg List]     where       str = pack . symbolVal $ (Proxy :: Proxy sym)@@ -264,12 +264,12 @@         , _argType = typeFor lang (Proxy :: Proxy ftype) (Proxy :: Proxy [a]) }  instance-  (KnownSymbol sym, HasForeignType lang ftype Bool, HasForeign lang ftype sublayout)-  => HasForeign lang ftype (QueryFlag sym :> sublayout) where-  type Foreign ftype (QueryFlag sym :> sublayout) = Foreign ftype sublayout+  (KnownSymbol sym, HasForeignType lang ftype Bool, HasForeign lang ftype api)+  => HasForeign lang ftype (QueryFlag sym :> api) where+  type Foreign ftype (QueryFlag sym :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) $+    foreignFor lang ftype (Proxy :: Proxy api) $       req & reqUrl.queryStr <>~ [QueryArg arg Flag]     where       str = pack . symbolVal $ (Proxy :: Proxy sym)@@ -284,20 +284,20 @@     req & reqFuncName . _FunctionName %~ ((toLower $ decodeUtf8 method) :)         & reqMethod .~ method -instance (Elem JSON list, HasForeignType lang ftype a, HasForeign lang ftype sublayout)-      => HasForeign lang ftype (ReqBody list a :> sublayout) where-  type Foreign ftype (ReqBody list a :> sublayout) = Foreign ftype sublayout+instance (Elem JSON list, HasForeignType lang ftype a, HasForeign lang ftype api)+      => HasForeign lang ftype (ReqBody list a :> api) where+  type Foreign ftype (ReqBody list a :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) $+    foreignFor lang ftype (Proxy :: Proxy api) $       req & reqBody .~ (Just $ typeFor lang ftype (Proxy :: Proxy a)) -instance (KnownSymbol path, HasForeign lang ftype sublayout)-      => HasForeign lang ftype (path :> sublayout) where-  type Foreign ftype (path :> sublayout) = Foreign ftype sublayout+instance (KnownSymbol path, HasForeign lang ftype api)+      => HasForeign lang ftype (path :> api) where+  type Foreign ftype (path :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) $+    foreignFor lang ftype (Proxy :: Proxy api) $       req & reqUrl . path <>~ [Segment (Static (PathSegment str))]           & reqFuncName . _FunctionName %~ (++ [str])     where@@ -305,39 +305,39 @@         Data.Text.map (\c -> if c == '.' then '_' else c)           . pack . symbolVal $ (Proxy :: Proxy path) -instance HasForeign lang ftype sublayout-  => HasForeign lang ftype (RemoteHost :> sublayout) where-  type Foreign ftype (RemoteHost :> sublayout) = Foreign ftype sublayout+instance HasForeign lang ftype api+  => HasForeign lang ftype (RemoteHost :> api) where+  type Foreign ftype (RemoteHost :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) req+    foreignFor lang ftype (Proxy :: Proxy api) req -instance HasForeign lang ftype sublayout-  => HasForeign lang ftype (IsSecure :> sublayout) where-  type Foreign ftype (IsSecure :> sublayout) = Foreign ftype sublayout+instance HasForeign lang ftype api+  => HasForeign lang ftype (IsSecure :> api) where+  type Foreign ftype (IsSecure :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) req+    foreignFor lang ftype (Proxy :: Proxy api) req -instance HasForeign lang ftype sublayout => HasForeign lang ftype (Vault :> sublayout) where-  type Foreign ftype (Vault :> sublayout) = Foreign ftype sublayout+instance HasForeign lang ftype api => HasForeign lang ftype (Vault :> api) where+  type Foreign ftype (Vault :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) req+    foreignFor lang ftype (Proxy :: Proxy api) req -instance HasForeign lang ftype sublayout =>-  HasForeign lang ftype (WithNamedContext name context sublayout) where+instance HasForeign lang ftype api =>+  HasForeign lang ftype (WithNamedContext name context api) where -  type Foreign ftype (WithNamedContext name context sublayout) = Foreign ftype sublayout+  type Foreign ftype (WithNamedContext name context api) = Foreign ftype api -  foreignFor lang ftype Proxy = foreignFor lang ftype (Proxy :: Proxy sublayout)+  foreignFor lang ftype Proxy = foreignFor lang ftype (Proxy :: Proxy api) -instance HasForeign lang ftype sublayout-  => HasForeign lang ftype (HttpVersion :> sublayout) where-  type Foreign ftype (HttpVersion :> sublayout) = Foreign ftype sublayout+instance HasForeign lang ftype api+  => HasForeign lang ftype (HttpVersion :> api) where+  type Foreign ftype (HttpVersion :> api) = Foreign ftype api    foreignFor lang ftype Proxy req =-    foreignFor lang ftype (Proxy :: Proxy sublayout) req+    foreignFor lang ftype (Proxy :: Proxy api) req  -- | Utility class used by 'listFromAPI' which computes --   the data needed to generate a function for each endpoint
test/Servant/ForeignSpec.hs view
@@ -26,7 +26,7 @@  data LangX -instance HasForeignType LangX String () where+instance HasForeignType LangX String NoContent where   typeFor _ _ _ = "voidX"  instance HasForeignType LangX String Int where@@ -43,9 +43,9 @@  type TestApi     = "test" :> Header "header" [String] :> QueryFlag "flag" :> Get '[JSON] Int- :<|> "test" :> QueryParam "param" Int :> ReqBody '[JSON] [String] :> Post '[JSON] ()- :<|> "test" :> QueryParams "params" Int :> ReqBody '[JSON] String :> Put '[JSON] ()- :<|> "test" :> Capture "id" Int :> Delete '[JSON] ()+ :<|> "test" :> QueryParam "param" Int :> ReqBody '[JSON] [String] :> Post '[JSON] NoContent+ :<|> "test" :> QueryParams "params" Int :> ReqBody '[JSON] String :> Put '[JSON] NoContent+ :<|> "test" :> Capture "id" Int :> Delete '[JSON] NoContent  testApi :: [Req String] testApi = listFromAPI (Proxy :: Proxy LangX) (Proxy :: Proxy String) (Proxy :: Proxy TestApi)