Skip to content

Commit

Permalink
Use GHC-9.4.8 snapshot and fix few warnings
Browse files Browse the repository at this point in the history
  • Loading branch information
stevladimir committed Dec 16, 2023
1 parent efb9a50 commit 6eebf12
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 29 deletions.
1 change: 0 additions & 1 deletion src/Data/OpenApi.hs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ module Data.OpenApi (

-- * Re-exports
module Data.OpenApi.Lens,
module Data.OpenApi.Optics,
module Data.OpenApi.Operation,
module Data.OpenApi.ParamSchema,
module Data.OpenApi.Schema,
Expand Down
2 changes: 1 addition & 1 deletion src/Data/OpenApi/Declare.hs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ instance (Applicative m, Monad m, Monoid d) => Applicative (DeclareT d m) where
return (mappend d' d'', f x)

instance (Applicative m, Monad m, Monoid d) => Monad (DeclareT d m) where
return x = DeclareT (\_ -> pure (mempty, x))
return = pure
DeclareT dx >>= f = DeclareT $ \d -> do
~(d', x) <- dx d
~(d'', y) <- runDeclareT (f x) (mappend d d')
Expand Down
20 changes: 12 additions & 8 deletions src/Data/OpenApi/Internal.hs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.OpenApi.Internal where

import Prelude ()
Expand Down Expand Up @@ -335,7 +337,9 @@ instance Data MediaType where

dataTypeOf _ = mediaTypeData

mediaTypeConstr :: Constr
mediaTypeConstr = mkConstr mediaTypeData "MediaType" [] Prefix
mediaTypeData :: DataType
mediaTypeData = mkDataType "MediaType" [mediaTypeConstr]

instance Hashable MediaType where
Expand Down Expand Up @@ -1006,12 +1010,12 @@ deriveGeneric ''OpenApiSpecVersion
-- =======================================================================

instance Semigroup OpenApiSpecVersion where
(<>) (OpenApiSpecVersion a) (OpenApiSpecVersion b) = OpenApiSpecVersion $ max a b
(<>) (OpenApiSpecVersion a) (OpenApiSpecVersion b) = OpenApiSpecVersion $ max a b

instance Monoid OpenApiSpecVersion where
mempty = OpenApiSpecVersion (makeVersion [3,0,0])
mappend = (<>)

instance Semigroup OpenApi where
(<>) = genericMappend
instance Monoid OpenApi where
Expand Down Expand Up @@ -1282,7 +1286,7 @@ instance FromJSON OAuth2AuthorizationCodeFlow where
-- Manual ToJSON instances
-- =======================================================================

instance ToJSON OpenApiSpecVersion where
instance ToJSON OpenApiSpecVersion where
toJSON (OpenApiSpecVersion v)= toJSON . showVersion $ v

instance ToJSON MediaType where
Expand Down Expand Up @@ -1456,15 +1460,15 @@ instance FromJSON OpenApiSpecVersion where
parseJSON = withText "OpenApiSpecVersion" $ \str ->
let validatedVersion :: Either String Version
validatedVersion = do
parsedVersion <- readVersion str
parsedVersion <- readVersion str
unless ((parsedVersion >= lowerOpenApiSpecVersion) && (parsedVersion <= upperOpenApiSpecVersion)) $
Left ("The provided version " <> showVersion parsedVersion <> " is out of the allowed range >=" <> showVersion lowerOpenApiSpecVersion <> " && <=" <> showVersion upperOpenApiSpecVersion)
return parsedVersion
in
in
either fail (return . OpenApiSpecVersion) validatedVersion
where
readVersion :: Text -> Either String Version
readVersion v = case readP_to_S parseVersion (Text.unpack v) of
readVersion v = case readP_to_S parseVersion (Text.unpack v) of
[] -> Left $ "Failed to parse as a version string " <> Text.unpack v
solutions -> Right (fst . last $ solutions)

Expand Down Expand Up @@ -1649,7 +1653,7 @@ instance HasSwaggerAesonOptions Encoding where
instance HasSwaggerAesonOptions Link where
swaggerAesonOptions _ = mkSwaggerAesonOptions "link"

instance AesonDefaultValue Version where
instance AesonDefaultValue Version where
defaultValue = Just (makeVersion [3,0,0])
instance AesonDefaultValue OpenApiSpecVersion
instance AesonDefaultValue Server
Expand Down
1 change: 1 addition & 0 deletions src/Data/OpenApi/Internal/AesonUtils.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableSuperClasses #-}
module Data.OpenApi.Internal.AesonUtils (
-- * Generic functions
Expand Down
9 changes: 5 additions & 4 deletions src/Data/OpenApi/Internal/ParamSchema.hs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ module Data.OpenApi.Internal.ParamSchema where

import Control.Lens
import Data.Aeson (ToJSON (..))
import Data.Kind
import Data.Proxy
import GHC.Generics

Expand Down Expand Up @@ -163,7 +164,7 @@ instance ToParamSchema Word64 where
-- "minimum": -128,
-- "type": "integer"
-- }
toParamSchemaBoundedIntegral :: forall a t. (Bounded a, Integral a) => Proxy a -> Schema
toParamSchemaBoundedIntegral :: forall a. (Bounded a, Integral a) => Proxy a -> Schema
toParamSchemaBoundedIntegral _ = mempty
& type_ ?~ OpenApiInteger
& minimum_ ?~ fromInteger (toInteger (minBound :: a))
Expand Down Expand Up @@ -310,10 +311,10 @@ instance ToParamSchema UUID where
-- ],
-- "type": "string"
-- }
genericToParamSchema :: forall a t. (Generic a, GToParamSchema (Rep a)) => SchemaOptions -> Proxy a -> Schema
genericToParamSchema :: forall a. (Generic a, GToParamSchema (Rep a)) => SchemaOptions -> Proxy a -> Schema
genericToParamSchema opts _ = gtoParamSchema opts (Proxy :: Proxy (Rep a)) mempty

class GToParamSchema (f :: * -> *) where
class GToParamSchema (f :: Type -> Type) where
gtoParamSchema :: SchemaOptions -> Proxy f -> Schema -> Schema

instance GToParamSchema f => GToParamSchema (D1 d f) where
Expand All @@ -331,7 +332,7 @@ instance ToParamSchema c => GToParamSchema (K1 i c) where
instance (GEnumParamSchema f, GEnumParamSchema g) => GToParamSchema (f :+: g) where
gtoParamSchema opts _ = genumParamSchema opts (Proxy :: Proxy (f :+: g))

class GEnumParamSchema (f :: * -> *) where
class GEnumParamSchema (f :: Type -> Type) where
genumParamSchema :: SchemaOptions -> Proxy f -> Schema -> Schema

instance (GEnumParamSchema f, GEnumParamSchema g) => GEnumParamSchema (f :+: g) where
Expand Down
13 changes: 6 additions & 7 deletions src/Data/OpenApi/Internal/Schema.hs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ import qualified Data.HashMap.Strict.InsOrd as InsOrdHashMap
import Data.Int
import Data.IntSet (IntSet)
import Data.IntMap (IntMap)
import Data.Kind
import Data.List (sort)
import Data.List.NonEmpty.Compat (NonEmpty)
import Data.Map (Map)
Expand Down Expand Up @@ -587,7 +588,7 @@ sketchStrictSchema = go . toJSON
where
names = objectKeys o

class GToSchema (f :: * -> *) where
class GToSchema (f :: Type -> Type) where
gdeclareNamedSchema :: SchemaOptions -> Proxy f -> Schema -> Declare (Definitions Schema) NamedSchema

instance {-# OVERLAPPABLE #-} ToSchema a => ToSchema [a] where
Expand Down Expand Up @@ -1031,7 +1032,9 @@ instance ( GSumToSchema f

gdeclareNamedSumSchema :: GSumToSchema f => SchemaOptions -> Proxy f -> Schema -> Declare (Definitions Schema) NamedSchema
gdeclareNamedSumSchema opts proxy _
| allNullaryToStringTag opts && allNullary = pure $ unnamed (toStringTag sumSchemas)
| allNullaryToStringTag opts && allNullary = pure $ unnamed $ mempty
& type_ ?~ OpenApiString
& enum_ ?~ map (String . fst) sumSchemas
| otherwise = do
(schemas, _) <- runWriterT declareSumSchema
return $ unnamed $ mempty
Expand All @@ -1040,13 +1043,9 @@ gdeclareNamedSumSchema opts proxy _
declareSumSchema = gsumToSchema opts proxy
(sumSchemas, All allNullary) = undeclare (runWriterT declareSumSchema)

toStringTag schemas = mempty
& type_ ?~ OpenApiString
& enum_ ?~ map (String . fst) sumSchemas

type AllNullary = All

class GSumToSchema (f :: * -> *) where
class GSumToSchema (f :: Type -> Type) where
gsumToSchema :: SchemaOptions -> Proxy f -> WriterT AllNullary (Declare (Definitions Schema)) [(T.Text, Referenced Schema)]

instance (GSumToSchema f, GSumToSchema g) => GSumToSchema (f :+: g) where
Expand Down
4 changes: 3 additions & 1 deletion src/Data/OpenApi/Internal/TypeShape.hs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -Wno-unticked-promoted-constructors #-}

module Data.OpenApi.Internal.TypeShape where

import Data.Kind
import Data.Proxy
import GHC.Generics
import GHC.TypeLits
Expand Down Expand Up @@ -46,7 +48,7 @@ type family GenericHasSimpleShape t (f :: Symbol) (s :: TypeShape) :: Constraint
)

-- | Infer a 'TypeShape' for a generic representation of a type.
type family GenericShape (g :: * -> *) :: TypeShape
type family GenericShape (g :: Type -> Type) :: TypeShape

type instance GenericShape (f :*: g) = ProdCombine (GenericShape f) (GenericShape g)
type instance GenericShape (f :+: g) = SumCombine (GenericShape f) (GenericShape g)
Expand Down
1 change: 1 addition & 0 deletions src/Data/OpenApi/Optics.hs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
-- |
Expand Down
10 changes: 3 additions & 7 deletions stack.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
resolver: lts-16.31
resolver: lts-21.24
packages:
- '.'
extra-deps:
- optics-core-0.3
- optics-th-0.3
- optics-extra-0.3
- indexed-profunctors-0.1
- insert-ordered-containers-0.2.3.1
ghc-options:
$locals: -Wall -Wno-unused-imports -Wno-dodgy-imports -Wno-name-shadowing

0 comments on commit 6eebf12

Please sign in to comment.