@@ -1,4 +1,5 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2+{-# LANGUAGE DataKinds #-}
2{-# LANGUAGE DefaultSignatures #-}
3{-# LANGUAGE DefaultSignatures #-}
3{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE FlexibleContexts #-}
4{-# LANGUAGE FlexibleInstances #-}
5{-# LANGUAGE FlexibleInstances #-}
@@ -7,8 +8,10 @@
7{-# LANGUAGE PackageImports #-}
8{-# LANGUAGE PackageImports #-}
8{-# LANGUAGE PolyKinds #-}
9{-# LANGUAGE PolyKinds #-}
9{-# LANGUAGE ScopedTypeVariables #-}
10{-# LANGUAGE ScopedTypeVariables #-}
11+{-# LANGUAGE TypeFamilies #-}
10{-# LANGUAGE TypeOperators #-}
12{-# LANGUAGE TypeOperators #-}
11{-# LANGUAGE TypeSynonymInstances #-}
13{-# LANGUAGE TypeSynonymInstances #-}
14+{-# LANGUAGE UndecidableInstances #-}
12#if __GLASGOW_HASKELL__ >= 800
15#if __GLASGOW_HASKELL__ >= 800
13-- Generic a is redundant in ToParamSchema a default imple
16-- Generic a is redundant in ToParamSchema a default imple
14{-# OPTIONS_GHC -Wno-redundant-constraints #-}
17{-# OPTIONS_GHC -Wno-redundant-constraints #-}
@@ -40,6 +43,13 @@ import Data.Swagger.Internal
40import Data.Swagger.Lens
43import Data.Swagger.Lens
41import Data.Swagger.SchemaOptions
44import Data.Swagger.SchemaOptions
46+#if __GLASGOW_HASKELL__ < 800
48+import qualified Data.ByteString as BS
49+import qualified Data.ByteString.Lazy as BSL
50+import GHC.TypeLits (TypeError, ErrorMessage(..))
43-- | Default schema for binary data (any sequence of octets).
53-- | Default schema for binary data (any sequence of octets).
44binaryParamSchema :: ParamSchema t
54binaryParamSchema :: ParamSchema t
45binaryParamSchema = mempty
55binaryParamSchema = mempty
@@ -193,6 +203,18 @@ instance ToParamSchema T.Text where
193instance ToParamSchema TL.Text where
203instance ToParamSchema TL.Text where
194 toParamSchema _ = toParamSchema (Proxy :: Proxy String)
204 toParamSchema _ = toParamSchema (Proxy :: Proxy String)
206+#if __GLASGOW_HASKELL__ < 800
208+type family ToParamSchemaByteStringError bs where
209+ ToParamSchemaByteStringError bs = TypeError
210+ ( Text "Impossible to have an instance " :<>: ShowType (ToParamSchema bs) :<>: Text "."
211+ :$$: Text "Please, use a newtype wrapper around " :<>: ShowType bs :<>: Text " instead."
212+ :$$: Text "Consider using byteParamSchema or binaryParamSchema templates." )
214+instance ToParamSchemaByteStringError BS.ByteString => ToParamSchema BS.ByteString where toParamSchema = error "impossible"
215+instance ToParamSchemaByteStringError BSL.ByteString => ToParamSchema BSL.ByteString where toParamSchema = error "impossible"
196instance ToParamSchema All where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
218instance ToParamSchema All where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
197instance ToParamSchema Any where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
219instance ToParamSchema Any where toParamSchema _ = toParamSchema (Proxy :: Proxy Bool)
198instance ToParamSchema a => ToParamSchema (Sum a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)
220instance ToParamSchema a => ToParamSchema (Sum a) where toParamSchema _ = toParamSchema (Proxy :: Proxy a)