packages feed

yesod-core 1.6.27.0 → 1.6.27.1

raw patch · 70 files changed

+407/−258 lines, 70 filesdep ~basePVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: base

API changes (from Hackage documentation)

+ Yesod.Core: data family Route a
+ Yesod.Core.Json: ($dmparseJSON) :: (FromJSON a, Generic a, GFromJSON Zero (Rep a)) => Value -> Parser a
+ Yesod.Core.Json: ($dmtoJSON) :: (ToJSON a, Generic a, GToJSON' Value Zero (Rep a)) => a -> Value
- Yesod.Core: class (MonadResource m, MonadLogger m) => MonadHandler m where {
+ Yesod.Core: class (MonadResource m, MonadLogger m) => MonadHandler (m :: Type -> Type) where {
- Yesod.Core: class MonadHandler m => MonadWidget m
+ Yesod.Core: class MonadHandler m => MonadWidget (m :: Type -> Type)
- Yesod.Core: class Eq (Route a) => RenderRoute a where {
+ Yesod.Core: class Eq Route a => RenderRoute a where {
- Yesod.Core: data () => LogLevel
+ Yesod.Core: data LogLevel
- Yesod.Core: type BottomOfHeadAsync master = -- | urls to load asynchronously [Text] -> -- | widget of js to run on async completion Maybe (HtmlUrl (Route master)) -> -- | widget to insert at the bottom of <head> HtmlUrl (Route master)
+ Yesod.Core: type BottomOfHeadAsync master = [Text] -> Maybe HtmlUrl Route master -> HtmlUrl Route master
- Yesod.Core: type HandlerSite m;
+ Yesod.Core: type HandlerSite (m :: Type -> Type);
- Yesod.Core: type SubHandlerSite m;
+ Yesod.Core: type SubHandlerSite (m :: Type -> Type);
- Yesod.Core: yesodRunner :: forall res site. (ToTypedContent res, Yesod site) => HandlerFor site res -> YesodRunnerEnv site -> Maybe (Route site) -> Application
+ Yesod.Core: yesodRunner :: (ToTypedContent res, Yesod site) => HandlerFor site res -> YesodRunnerEnv site -> Maybe (Route site) -> Application
- Yesod.Core.Dispatch: class () => PathMultiPiece s
+ Yesod.Core.Dispatch: class PathMultiPiece s
- Yesod.Core.Dispatch: class () => PathPiece s
+ Yesod.Core.Dispatch: class PathPiece s
- Yesod.Core.Handler: data ProvidedRep m
+ Yesod.Core.Handler: data ProvidedRep (m :: Type -> Type)
- Yesod.Core.Handler: fileSource :: MonadResource m => FileInfo -> ConduitT () ByteString m ()
+ Yesod.Core.Handler: fileSource :: forall (m :: Type -> Type). MonadResource m => FileInfo -> ConduitT () ByteString m ()
- Yesod.Core.Handler: rawRequestBody :: MonadHandler m => ConduitT i ByteString m ()
+ Yesod.Core.Handler: rawRequestBody :: forall (m :: Type -> Type) i. MonadHandler m => ConduitT i ByteString m ()
- Yesod.Core.Handler: sendChunk :: Monad m => ToFlushBuilder a => a -> ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendChunk :: forall (m :: Type -> Type) a i. (Monad m, ToFlushBuilder a) => a -> ConduitT i (Flush Builder) m ()
- Yesod.Core.Handler: sendChunkBS :: Monad m => ByteString -> ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendChunkBS :: forall (m :: Type -> Type) i. Monad m => ByteString -> ConduitT i (Flush Builder) m ()
- Yesod.Core.Handler: sendChunkHtml :: Monad m => Html -> ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendChunkHtml :: forall (m :: Type -> Type) i. Monad m => Html -> ConduitT i (Flush Builder) m ()
- Yesod.Core.Handler: sendChunkLBS :: Monad m => ByteString -> ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendChunkLBS :: forall (m :: Type -> Type) i. Monad m => ByteString -> ConduitT i (Flush Builder) m ()
- Yesod.Core.Handler: sendChunkLazyText :: Monad m => Text -> ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendChunkLazyText :: forall (m :: Type -> Type) i. Monad m => Text -> ConduitT i (Flush Builder) m ()
- Yesod.Core.Handler: sendChunkText :: Monad m => Text -> ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendChunkText :: forall (m :: Type -> Type) i. Monad m => Text -> ConduitT i (Flush Builder) m ()
- Yesod.Core.Handler: sendFlush :: Monad m => ConduitT i (Flush Builder) m ()
+ Yesod.Core.Handler: sendFlush :: forall (m :: Type -> Type) i. Monad m => ConduitT i (Flush Builder) m ()
- Yesod.Core.Json: class () => FromJSON a
+ Yesod.Core.Json: class FromJSON a
- Yesod.Core.Json: class () => ToJSON a
+ Yesod.Core.Json: class ToJSON a
- Yesod.Core.Json: data () => Value
+ Yesod.Core.Json: data Value
- Yesod.Core.Json: provideJson :: (Monad m, ToJSON a) => a -> Writer (Endo [ProvidedRep m]) ()
+ Yesod.Core.Json: provideJson :: forall (m :: Type -> Type) a. (Monad m, ToJSON a) => a -> Writer (Endo [ProvidedRep m]) ()
- Yesod.Core.Types: RunHandlerEnv :: !Route site -> [(Text, Text)] -> Text -> !Maybe (Route child) -> !Route child -> Route site -> !site -> !child -> !RequestBodyLength -> FileUpload -> !Loc -> LogSource -> LogLevel -> LogStr -> IO () -> !ErrorResponse -> YesodApp -> !Text -> !forall a m. MonadUnliftIO m => m a -> (SomeException -> m a) -> m a -> RunHandlerEnv child site
+ Yesod.Core.Types: RunHandlerEnv :: !Route site -> [(Text, Text)] -> Text -> !Maybe (Route child) -> !Route child -> Route site -> !site -> !child -> !RequestBodyLength -> FileUpload -> !Loc -> LogSource -> LogLevel -> LogStr -> IO () -> !ErrorResponse -> YesodApp -> !Text -> !forall a (m :: Type -> Type). MonadUnliftIO m => m a -> (SomeException -> m a) -> m a -> RunHandlerEnv child site
- Yesod.Core.Types: [JSONResponse] :: ToJSON a => a -> JSONResponse a
+ Yesod.Core.Types: [JSONResponse] :: forall a. ToJSON a => a -> JSONResponse a
- Yesod.Core.Types: [rheCatchHandlerExceptions] :: RunHandlerEnv child site -> !forall a m. MonadUnliftIO m => m a -> (SomeException -> m a) -> m a
+ Yesod.Core.Types: [rheCatchHandlerExceptions] :: RunHandlerEnv child site -> !forall a (m :: Type -> Type). MonadUnliftIO m => m a -> (SomeException -> m a) -> m a
- Yesod.Core.Types: type BottomOfHeadAsync master = -- | urls to load asynchronously [Text] -> -- | widget of js to run on async completion Maybe (HtmlUrl (Route master)) -> -- | widget to insert at the bottom of <head><style type="text/css">#synopsis details:not([open]) > ul { visibility: hidden; }</style> HtmlUrl (Route master)
+ Yesod.Core.Types: type BottomOfHeadAsync master = [Text] -> Maybe HtmlUrl Route master -> HtmlUrl Route master
- Yesod.Core.Types: type CssBuilderUrl a = (a -> [(Text, Text)] -> Text) -> Builder
+ Yesod.Core.Types: type CssBuilderUrl a = a -> [(Text, Text)] -> Text -> Builder
- Yesod.Core.Types: type ParentRunner parent = HandlerFor parent TypedContent -> YesodRunnerEnv parent -> Maybe (Route parent) -> Application
+ Yesod.Core.Types: type ParentRunner parent = HandlerFor parent TypedContent -> YesodRunnerEnv parent -> Maybe Route parent -> Application
- Yesod.Core.Types: type SaveSession = -- | The session contents after running the handler SessionMap -> IO [Header]
+ Yesod.Core.Types: type SaveSession = SessionMap -> IO [Header]
- Yesod.Core.Unsafe: runFakeHandler :: forall site m a. (Yesod site, MonadIO m) => SessionMap -> (site -> Logger) -> site -> HandlerFor site a -> m (Either ErrorResponse a)
+ Yesod.Core.Unsafe: runFakeHandler :: (Yesod site, MonadIO m) => SessionMap -> (site -> Logger) -> site -> HandlerFor site a -> m (Either ErrorResponse a)
- Yesod.Core.Widget: asWidgetT :: WidgetT site m () -> WidgetT site m ()
+ Yesod.Core.Widget: asWidgetT :: forall site (m :: Type -> Type). WidgetT site m () -> WidgetT site m ()

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # ChangeLog for yesod-core +## 1.6.27.1++* Set `base >= 4.11` for less CPP and imports [#1876](https://github.com/yesodweb/yesod/pull/1876)+ ## 1.6.27.0  * Build with `wai-extra-3.1.17` [#1861](https://github.com/yesodweb/yesod/pull/1861)
bench/widget.hs view
@@ -1,15 +1,14 @@-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-}--- | BigTable benchmark implemented using Hamlet.---+{-# LANGUAGE OverloadedStrings #-}+-- BigTable benchmark implemented using Hamlet. {-# LANGUAGE QuasiQuotes #-}+ module Main where  import Gauge.Main import Text.Hamlet import qualified Data.ByteString.Lazy as L import qualified Text.Blaze.Html.Renderer.Utf8 as Utf8-import Data.Monoid (mconcat) import Text.Blaze.Html5 (table, tr, td) import Text.Blaze.Html (toHtml) import Data.Int@@ -64,6 +63,6 @@     -}  bigTableBlaze :: Show a => [[a]] -> Int64-bigTableBlaze t = L.length $ Utf8.renderHtml $ table $ Data.Monoid.mconcat $ map row t+bigTableBlaze t = L.length $ Utf8.renderHtml $ table $ concatMap row t   where-    row r = tr $ mconcat $ map (td . toHtml . show) r+    row r = tr $ concatMap (td . toHtml . show) r
src/Yesod/Core.hs view
@@ -1,8 +1,9 @@-{-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -fno-warn-warnings-deprecations #-}+ module Yesod.Core     ( -- * Type classes       Yesod (..)
src/Yesod/Core/Class/Breadcrumbs.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-}+ module Yesod.Core.Class.Breadcrumbs where  import Yesod.Core.Handler
src/Yesod/Core/Class/Dispatch.hs view
@@ -1,9 +1,10 @@+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RankNTypes #-}-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleContexts  #-}+ module Yesod.Core.Class.Dispatch where  import qualified Network.Wai as W
src/Yesod/Core/Class/Handler.hs view
@@ -1,10 +1,11 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ConstraintKinds #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE UndecidableInstances #-}+ module Yesod.Core.Class.Handler     ( MonadHandler (..)     , MonadWidget (..)
src/Yesod/Core/Class/Yesod.hs view
@@ -1,8 +1,7 @@-{-# LANGUAGE FlexibleContexts    #-}-{-# LANGUAGE OverloadedStrings   #-}-{-# LANGUAGE QuasiQuotes         #-}-{-# LANGUAGE TemplateHaskell     #-}-{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}  module Yesod.Core.Class.Yesod where @@ -26,7 +25,7 @@ import           Data.List                          (foldl', nub) import qualified Data.Map                           as Map import           Data.Maybe                         (catMaybes)-import           Data.Monoid+import           Data.Monoid                        (Last (..)) import           Data.Text                          (Text) import qualified Data.Text                          as T import qualified Data.Text.Encoding                 as TE@@ -54,7 +53,6 @@ import           Yesod.Core.Internal.Session import           Yesod.Core.Widget import Data.CaseInsensitive (CI)-import qualified Network.Wai.Handler.Warp as Warp import qualified Network.Wai.Request import Data.IORef import UnliftIO (SomeException, catch, MonadUnliftIO)@@ -78,7 +76,7 @@     --  allows the user to specify how exceptions are cought.     --  by default all async exceptions are thrown and synchronous     --  exceptions render a 500 page.-    -- To catch all exceptions (even async) to render a 500 page, +    -- To catch all exceptions (even async) to render a 500 page,     -- set this to 'UnliftIO.Exception.catchSyncOrAsync'. Beware     -- this may have negative effects with functions like 'timeout'.     catchHandlerExceptions :: MonadUnliftIO m => site -> m a -> (SomeException -> m a) -> m a
src/Yesod/Core/Content.hs view
@@ -1,9 +1,10 @@ {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE Rank2Types #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TypeSynonymInstances #-}-{-# LANGUAGE Rank2Types #-}-{-# LANGUAGE OverloadedStrings #-}+ module Yesod.Core.Content     ( -- * Content       Content (..)
src/Yesod/Core/Dispatch.hs view
@@ -4,6 +4,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}+ module Yesod.Core.Dispatch     ( -- * Quasi-quoted routing       parseRoutes
src/Yesod/Core/Handler.hs view
@@ -1,15 +1,18 @@-{-# LANGUAGE FlexibleContexts           #-}-{-# LANGUAGE ConstraintKinds            #-}-{-# LANGUAGE FlexibleInstances          #-}-{-# LANGUAGE FunctionalDependencies     #-}-{-# LANGUAGE OverloadedStrings          #-}-{-# LANGUAGE QuasiQuotes                #-}-{-# LANGUAGE RecordWildCards            #-}-{-# LANGUAGE TupleSections              #-}-{-# LANGUAGE TypeFamilies               #-}-{-# LANGUAGE RankNTypes                 #-}-{-# LANGUAGE ScopedTypeVariables        #-}-{-# LANGUAGE TemplateHaskell            #-}+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+ --------------------------------------------------------- -- -- Module        : Yesod.Handler@@ -249,7 +252,6 @@ import           Web.PathPieces                (PathPiece(..)) import           Yesod.Core.Class.Handler import           Yesod.Core.Types-import           Yesod.Routes.Class            (Route) import           Data.ByteString.Builder (Builder) import           Data.CaseInsensitive (CI, original) import qualified Data.Conduit.List as CL@@ -415,9 +417,15 @@           where             oldReq    = handlerRequest oldHandlerData             oldWaiReq = reqWaiRequest oldReq+#if MIN_VERSION_wai(3,2,4)+            newWaiReq =+                W.setRequestBodyChunks (return mempty) $+                    oldWaiReq { W.requestBodyLength = W.KnownLength 0 }+#else             newWaiReq = oldWaiReq { W.requestBody = return mempty                                   , W.requestBodyLength = W.KnownLength 0                                   }+#endif         oldEnv = handlerEnv oldHandlerData     newState <- liftIO $ do       oldState <- I.readIORef (handlerState oldHandlerData)@@ -1434,7 +1442,11 @@ rawRequestBody = do     req <- lift waiRequest     let loop = do+#if MIN_VERSION_wai(3,2,2)+            bs <- liftIO $ W.getRequestBodyChunk req+#else             bs <- liftIO $ W.requestBody req+#endif             unless (S.null bs) $ do                 yield bs                 loop
src/Yesod/Core/Internal/LiteApp.hs view
@@ -1,9 +1,8 @@-{-# LANGUAGE TypeFamilies, PatternGuards, CPP #-}+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE TypeFamilies #-}+ module Yesod.Core.Internal.LiteApp where -#if !(MIN_VERSION_base(4,11,0))-import Data.Semigroup (Semigroup(..))-#endif import Yesod.Routes.Class import Yesod.Core.Class.Yesod import Yesod.Core.Class.Dispatch@@ -47,9 +46,6 @@  instance Monoid LiteApp where     mempty = LiteApp $ \_ _ -> Nothing-#if !(MIN_VERSION_base(4,11,0))-    mappend = (<>)-#endif  type LiteHandler = HandlerFor LiteApp type LiteWidget = WidgetFor LiteApp
src/Yesod/Core/Internal/Request.hs view
@@ -1,4 +1,6 @@-{-# LANGUAGE OverloadedStrings, CPP #-}+{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedStrings #-}+ module Yesod.Core.Internal.Request     ( parseWaiRequest     , RequestBodyContents@@ -49,9 +51,12 @@ limitRequestBody :: Word64 -> W.Request -> IO W.Request limitRequestBody maxLen req = do     ref <- newIORef maxLen-    return req-        { W.requestBody = do+    let bd = do+#if MIN_VERSION_wai(3,2,2)+            bs <- W.getRequestBodyChunk req+#else             bs <- W.requestBody req+#endif             remaining <- readIORef ref             let len = fromIntegral $ S8.length bs                 remaining' = remaining - len@@ -60,13 +65,17 @@                 else do                     writeIORef ref remaining'                     return bs-        }+#if MIN_VERSION_wai(3,2,4)+    return $ W.setRequestBodyChunks bd req+#else+    return req { W.requestBody = bd }+#endif  tooLargeResponse :: Word64 -> Word64 -> W.Response tooLargeResponse maxLen bodyLen = W.responseLBS     (Status 413 "Too Large")     [("Content-Type", "text/plain")]-    (L.concat +    (L.concat         [ "Request body too large to be processed. The maximum size is "         , (LS8.pack (show maxLen))         , " bytes; your request body was "
src/Yesod/Core/Internal/Response.hs view
@@ -1,6 +1,5 @@-{-# LANGUAGE CPP               #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RankNTypes        #-}+ module Yesod.Core.Internal.Response where  import           Data.ByteString              (ByteString)
src/Yesod/Core/Internal/Run.hs view
@@ -1,11 +1,12 @@-{-# LANGUAGE OverloadedStrings   #-}-{-# LANGUAGE PatternGuards       #-}-{-# LANGUAGE RankNTypes          #-}-{-# LANGUAGE RecordWildCards     #-}-{-# LANGUAGE TemplateHaskell     #-}-{-# LANGUAGE TupleSections       #-}-{-# LANGUAGE FlexibleContexts    #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TupleSections #-}+ module Yesod.Core.Internal.Run   ( toErrorHandler   , errFromShow@@ -22,8 +23,7 @@   )   where -import qualified Control.Exception as EUnsafe-import Yesod.Core.Internal.Response+import           Yesod.Core.Internal.Response import           Data.ByteString.Builder      (toLazyByteString) import qualified Data.ByteString.Lazy         as BL import           Control.Monad.IO.Class       (MonadIO, liftIO)@@ -43,7 +43,6 @@ import           Language.Haskell.TH.Syntax   (Loc, qLocation) import qualified Network.HTTP.Types           as H import           Network.Wai-import           Network.Wai.Internal import           System.Log.FastLogger        (LogStr, toLogStr) import           Yesod.Core.Content import           Yesod.Core.Class.Yesod@@ -51,11 +50,9 @@ import           Yesod.Core.Internal.Request  (parseWaiRequest,                                                tooLargeResponse) import           Yesod.Core.Internal.Util     (getCurrentMaxExpiresRFC1123)-import           Yesod.Routes.Class           (Route, renderRoute)+import           Yesod.Routes.Class           (RenderRoute (..)) import           Control.DeepSeq              (($!!), NFData) import           UnliftIO.Exception-import           UnliftIO(MonadUnliftIO, withRunInIO)-import           Data.Proxy(Proxy(..))  -- | Convert a synchronous exception into an ErrorResponse toErrorHandler :: SomeException -> IO ErrorResponse@@ -288,23 +285,12 @@                      typePlain                      (toContent ("runFakeHandler: errHandler" :: S8.ByteString))                      (reqSession req)-      fakeWaiRequest = Request+      fakeWaiRequest = defaultRequest           { requestMethod  = "POST"           , httpVersion    = H.http11           , rawPathInfo    = "/runFakeHandler/pathInfo"-          , rawQueryString = ""-          , requestHeaderHost = Nothing-          , requestHeaders = []-          , isSecure       = False           , remoteHost     = error "runFakeHandler-remoteHost"           , pathInfo       = ["runFakeHandler", "pathInfo"]-          , queryString    = []-          , requestBody    = return mempty-          , vault          = mempty-          , requestBodyLength = KnownLength 0-          , requestHeaderRange = Nothing-          , requestHeaderReferer = Nothing-          , requestHeaderUserAgent = Nothing           }       fakeRequest =         YesodRequest@@ -365,7 +351,6 @@           yar <- runInternalState (runHandler rhe handler yreq') is           yarToResponse yar saveSession yreq' req is sendResponse   where-    mmaxLen = maximumContentLength yreSite route     handler = yesodMiddleware handler'  yesodRender :: Yesod y
src/Yesod/Core/Internal/TH.hs view
@@ -1,10 +1,11 @@-{-# LANGUAGE TemplateHaskellQuotes #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TemplateHaskellQuotes #-}+{-# LANGUAGE TypeFamilies #-}+ module Yesod.Core.Internal.TH     ( mkYesod     , mkYesodOpts@@ -32,7 +33,7 @@     , mkDispatchInstance      , mkYesodSubDispatch-    +     , subTopDispatch     , instanceD @@ -69,7 +70,7 @@ -- is used for creating sites, /not/ subsites. See 'mkYesodSubData' and 'mkYesodSubDispatch' for the latter. -- Use 'parseRoutes' to create the 'Resource's. ----- Contexts and type variables in the name of the datatype are parsed. +-- Contexts and type variables in the name of the datatype are parsed. -- For example, a datatype @App a@ with typeclass constraint @MyClass a@ can be written as @\"(MyClass a) => App a\"@. mkYesod :: String -- ^ name of the argument datatype         -> [ResourceTree String]@@ -87,8 +88,8 @@   {-# DEPRECATED mkYesodWith "Contexts and type variables are now parsed from the name in `mkYesod`. <https://github.com/yesodweb/yesod/pull/1366>" #-}--- | Similar to 'mkYesod', except contexts and type variables are not parsed. --- Instead, they are explicitly provided. +-- | Similar to 'mkYesod', except contexts and type variables are not parsed.+-- Instead, they are explicitly provided. -- You can write @(MyClass a) => App a@ with @mkYesodWith [[\"MyClass\",\"a\"]] \"App\" [\"a\"] ...@. mkYesodWith :: [[String]] -- ^ list of contexts             -> String -- ^ name of the argument datatype@@ -172,7 +173,7 @@             _ <- char ')'             return r -        parseContexts = +        parseContexts =             sepBy1 (many1 parseWord) (spaces >> char ',' >> return ())  @@ -218,8 +219,11 @@                    -> [ResourceTree String]                    -> Q([Dec],[Dec]) mkYesodGeneralOpts opts appCxt' namestr mtys isSub f resS = do-    let appCxt = fmap (\(c:rest) -> -            foldl' (\acc v -> acc `AppT` nameToType v) (ConT $ mkName c) rest+    let appCxt = fmap (\ctxs ->+            case ctxs of+                c:rest ->+                    foldl' (\acc v -> acc `AppT` nameToType v) (ConT $ mkName c) rest+                [] -> error $ "Bad context: " ++ show ctxs           ) appCxt'     mname <- lookupTypeName namestr     arity <- case mname of@@ -289,11 +293,11 @@                    -> [ResourceTree c]          -- ^ The resource                    -> DecsQ mkDispatchInstance master cxt f res = do-    clause' <- -        mkDispatchClause -            (mkMDS -                f -                [|yesodRunner|] +    clause' <-+        mkDispatchClause+            (mkMDS+                f+                [|yesodRunner|]                 [|\parentRunner getSub toParent env -> yesodSubDispatch                     YesodSubRunnerEnv                     { ysreParentRunner = parentRunner@@ -311,12 +315,12 @@  mkYesodSubDispatch :: [ResourceTree a] -> Q Exp mkYesodSubDispatch res = do-    clause' <- +    clause' <-         mkDispatchClause-            (mkMDS -                return -                [|subHelper|] -                [|subTopDispatch|]) +            (mkMDS+                return+                [|subHelper|]+                [|subTopDispatch|])         res     inner <- newName "inner"     let innerFun = FunD inner [clause']@@ -330,7 +334,7 @@     return $ LetE [fun] (VarE helper)  -subTopDispatch :: +subTopDispatch ::     (YesodSubDispatch sub master) =>         (forall content. ToTypedContent content =>             SubHandlerFor child master content ->
src/Yesod/Core/Internal/Util.hs view
@@ -1,4 +1,3 @@-{-# LANGUAGE CPP #-} module Yesod.Core.Internal.Util     ( putTime     , getTime
src/Yesod/Core/Json.hs view
@@ -1,6 +1,6 @@-{-# LANGUAGE TypeSynonymInstances, OverloadedStrings #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE OverloadedStrings #-} {-# OPTIONS_GHC -fno-warn-orphans #-}+ module Yesod.Core.Json     ( -- * Convert from a JSON value       defaultLayoutJson
src/Yesod/Core/TypeCache.hs view
src/Yesod/Core/Types.hs view
@@ -1,14 +1,14 @@-{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE FlexibleInstances          #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE MultiParamTypeClasses      #-}-{-# LANGUAGE TypeFamilies               #-}-{-# LANGUAGE UndecidableInstances #-}+{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GADTs #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE UndecidableInstances #-}+ module Yesod.Core.Types where  import Data.Aeson (ToJSON)@@ -29,7 +29,6 @@ import           Data.Map                           (Map, unionWith) import qualified Data.Map                           as Map import           Data.Monoid                        (Endo (..), Last (..))-import           Data.Semigroup                     (Semigroup(..)) import           Data.Serialize                     (Serialize (..),                                                      putByteString) import           Data.String                        (IsString (fromString))@@ -261,9 +260,6 @@  instance a ~ () => Monoid (WidgetFor site a) where     mempty = return ()-#if !(MIN_VERSION_base(4,11,0))-    mappend = (<>)-#endif instance a ~ () => Semigroup (WidgetFor site a) where     x <> y = x >> y @@ -397,13 +393,9 @@ newtype Description = Description { unDescription :: Text }  newtype Head url = Head (HtmlUrl url)-    deriving Monoid-instance Semigroup (Head url) where-  (<>) = mappend+    deriving (Semigroup, Monoid) newtype Body url = Body (HtmlUrl url)-    deriving Monoid-instance Semigroup (Body url) where-  (<>) = mappend+    deriving (Semigroup, Monoid)  type CssBuilderUrl a = (a -> [(Text, Text)] -> Text) -> TBuilder.Builder @@ -419,9 +411,6 @@     } instance Monoid (GWData a) where     mempty = GWData mempty mempty mempty mempty mempty mempty mempty mempty-#if !(MIN_VERSION_base(4,11,0))-    mappend = (<>)-#endif instance Semigroup (GWData a) where     GWData a1 a2 a3 a4 a5 a6 a7 a8 <>       GWData b1 b2 b3 b4 b5 b6 b7 b8 = GWData@@ -526,9 +515,6 @@  instance Monoid (UniqueList x) where     mempty = UniqueList id-#if !(MIN_VERSION_base(4,11,0))-    mappend = (<>)-#endif instance Semigroup (UniqueList x) where     UniqueList x <> UniqueList y = UniqueList $ x . y 
src/Yesod/Core/Widget.hs view
@@ -1,14 +1,15 @@-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE TupleSections #-}-{-# LANGUAGE RankNTypes #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE UndecidableInstances #-}-{-# LANGUAGE QuasiQuotes #-}  -- | Widgets combine HTML with JS and CSS dependencies with a unique identifier -- generator, allowing you to create truly modular HTML components.@@ -57,7 +58,7 @@     , asWidgetT     ) where -import Data.Monoid+import Data.Monoid (Last (..)) import qualified Text.Blaze.Html5 as H import Text.Hamlet import Text.Cassius
src/Yesod/Routes/Class.hs view
@@ -1,5 +1,6 @@-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE TypeFamilies #-}+ module Yesod.Routes.Class     ( RenderRoute (..)     , ParseRoute (..)
src/Yesod/Routes/Parse.hs view
@@ -1,6 +1,7 @@-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE PatternGuards #-}+{-# LANGUAGE TemplateHaskell #-} {-# OPTIONS_GHC -fno-warn-missing-fields #-} -- QuasiQuoter+ module Yesod.Routes.Parse     ( parseRoutes     , parseRoutesFile@@ -100,7 +101,11 @@                     , Just attrs <- mapM parseAttr rest ->                     let (children, otherLines'') = parse (length spaces + 1) otherLines                         children' = addAttrs attrs children-                        (pieces, Nothing, check) = piecesFromStringCheck pattern+                        (pieces, check) =+                            case piecesFromStringCheck pattern of+                                (p, Nothing, c) -> (p, c)+                                -- FIXME: Give better error message+                                _ -> error "Invalid resource line: bad overlap"                      in ((ResourceParent constr check pieces children' :), otherLines'')                 (pattern:constr:rest) ->                     let (pieces, mmulti, check) = piecesFromStringCheck pattern@@ -113,11 +118,11 @@ -- | Splits a string by spaces, as long as the spaces are not enclosed by curly brackets (not recursive). splitSpaces :: String -> [String] splitSpaces "" = []-splitSpaces str = +splitSpaces str =     let (rest, piece) = parse $ dropWhile isSpace str in     piece:(splitSpaces rest) -    where +    where         parse :: String -> ( String, String)         parse ('{':s) = fmap ('{':) $ parseBracket s         parse (c:s) | isSpace c = (s, [])@@ -302,6 +307,6 @@ lineContinuations :: String -> [String] -> [String] lineContinuations this [] = [this] lineContinuations this below@(next:rest) = case unsnoc this of-    Just (this', '\\') -> (this'++next):rest+    Just (this', '\\') -> (this' ++ next):rest     _ -> this:below   where unsnoc s = if null s then Nothing else Just (init s, last s)
src/Yesod/Routes/TH/Dispatch.hs view
@@ -1,5 +1,8 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE RecordWildCards, TemplateHaskell, ViewPatterns #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE ViewPatterns #-}+ module Yesod.Routes.TH.Dispatch     ( MkDispatchSettings (..)     , mkDispatchClause
src/Yesod/Routes/TH/ParseRoute.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE TemplateHaskell #-}+ module Yesod.Routes.TH.ParseRoute     ( -- ** ParseRoute       mkParseRouteInstance
src/Yesod/Routes/TH/RenderRoute.hs view
@@ -1,6 +1,6 @@-{-# LANGUAGE TupleSections #-} {-# LANGUAGE CPP #-} {-# LANGUAGE TemplateHaskellQuotes #-}+{-# LANGUAGE TupleSections #-}  module Yesod.Routes.TH.RenderRoute     ( -- ** RenderRoute
src/Yesod/Routes/TH/RouteAttrs.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CPP #-}-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TemplateHaskell #-}+ module Yesod.Routes.TH.RouteAttrs     ( mkRouteAttrsInstance     ) where
src/Yesod/Routes/TH/Types.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE DeriveFunctor #-} {-# LANGUAGE DeriveLift #-}+ -- | Warning! This module is considered internal and may have breaking changes module Yesod.Routes.TH.Types     ( -- * Data types
test/Hierarchy.hs view
@@ -1,13 +1,14 @@+{-# LANGUAGE CPP #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE TypeSynonymInstances #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ViewPatterns #-}-{-# LANGUAGE CPP #-}+ module Hierarchy     ( hierarchy     , Dispatcher (..)@@ -127,11 +128,10 @@         , mdsGetHandler = defaultGetHandler         , mdsUnwrapper = return         } resources-    return+    return $+        InstanceD #if MIN_VERSION_template_haskell(2,11,0)-        $ InstanceD Nothing-#else-        $ InstanceD+            Nothing #endif             []             (ConT ''Dispatcher
test/RouteSpec.hs view
@@ -1,17 +1,18 @@-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE ViewPatterns#-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE CPP #-} {-# LANGUAGE ExistentialQuantification #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-}-{-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeSynonymInstances #-}-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE CPP #-}-{-# LANGUAGE OverloadedStrings #-}-{-# OPTIONS_GHC -ddump-splices #-}+{-# LANGUAGE ViewPatterns#-}+-- {-# OPTIONS_GHC -ddump-splices #-}+ import Test.Hspec import Test.HUnit ((@?=)) import Data.Text (Text, pack, unpack, singleton)@@ -86,11 +87,10 @@         , mdsGetHandler = defaultGetHandler         , mdsUnwrapper = return         } ress-    return+    return $+        InstanceD #if MIN_VERSION_template_haskell(2,11,0)-        $ InstanceD Nothing-#else-        $ InstanceD+            Nothing #endif             []             (ConT ''Dispatcher
test/YesodCoreTest.hs view
@@ -1,4 +1,5 @@-{-# LANGUAGE CPP                        #-}+{-# LANGUAGE CPP #-}+ module YesodCoreTest (specs) where  import YesodCoreTest.CleanPath@@ -23,7 +24,7 @@ import qualified YesodCoreTest.Json as Json  -- Skip on Windows, see https://github.com/yesodweb/yesod/issues/1523#issuecomment-398278450-#if !WINDOWS+#ifndef WINDOWS import qualified YesodCoreTest.RawResponse as RawResponse #endif @@ -56,7 +57,7 @@       JsLoader.specs       RequestBodySize.specs       Json.specs-#if !WINDOWS+#ifndef WINDOWS       RawResponse.specs #endif       Streaming.specs
test/YesodCoreTest/Auth.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, TypeFamilies, MultiParamTypeClasses #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.Auth     ( specs     , Widget
test/YesodCoreTest/Breadcrumb.hs view
@@ -5,19 +5,17 @@ {-# LANGUAGE Rank2Types #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -Wno-unused-top-binds #-}  module YesodCoreTest.Breadcrumb   ( breadcrumbTest,   ) where -import qualified Data.ByteString.Lazy.Char8 as L8 import Data.Text (Text)-import Data.Typeable (Typeable) import Network.Wai import Network.Wai.Test import Test.Hspec-import UnliftIO.IORef import Yesod.Core  data A = A
test/YesodCoreTest/Cache.hs view
@@ -1,7 +1,11 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE Rank2Types #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.Cache     ( cacheTest     , Widget
test/YesodCoreTest/CleanPath.hs view
@@ -1,7 +1,11 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE FlexibleInstances, ViewPatterns #-}-{-# LANGUAGE CPP #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+ module YesodCoreTest.CleanPath     ( cleanPathTest     , Widget@@ -21,7 +25,6 @@ import qualified Data.Text.Encoding as TE import Control.Arrow ((***)) import Network.HTTP.Types (encodePath)-import Data.Monoid (mappend) import Data.Text.Encoding (encodeUtf8Builder)  data Subsite = Subsite@@ -64,7 +67,7 @@         corrected = filter (not . TS.null) s      joinPath Y ar pieces' qs' =-        encodeUtf8Builder ar `Data.Monoid.mappend` encodePath pieces qs+        encodeUtf8Builder ar `mappend` encodePath pieces qs       where         pieces = if null pieces' then [""] else pieces'         qs = map (TE.encodeUtf8 *** go) qs'
test/YesodCoreTest/Csrf.hs view
@@ -1,4 +1,8 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}  module YesodCoreTest.Csrf (csrfSpec, Widget, resourcesApp) where @@ -10,7 +14,6 @@ import Web.Cookie import qualified Data.Map as Map import Data.ByteString.Lazy (fromStrict)-import Data.Monoid ((<>))  data App = App @@ -79,7 +82,7 @@          res <- request (defaultRequest { requestMethod = "POST", requestHeaders = [(defaultCsrfHeaderName, csrfValue <> "foo")] })         assertStatus 403 res-        +     it "403s write requests with the wrong CSRF param" $ runner $ do         getRes <- request defaultRequest         assertStatus 200 getRes
test/YesodCoreTest/ErrorHandling.hs view
@@ -1,7 +1,11 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-}-{-# LANGUAGE LambdaCase #-}  module YesodCoreTest.ErrorHandling     ( errorHandlingTest@@ -10,7 +14,6 @@     ) where  import  Data.Typeable(cast)-import qualified System.Mem as Mem import qualified Control.Concurrent.Async as Async import Control.Concurrent as Conc import Yesod.Core@@ -20,10 +23,8 @@ import qualified Data.ByteString.Lazy as L import qualified Data.ByteString.Char8 as S8 import Control.Exception (SomeException, try, AsyncException(..))-import           UnliftIO.Exception(finally) import Network.HTTP.Types (Status, mkStatus) import Data.ByteString.Builder (Builder, toLazyByteString)-import Data.Monoid (mconcat) import Data.Text (Text, pack) import Control.Monad (forM_) import qualified Network.Wai.Handler.Warp as Warp@@ -121,7 +122,7 @@ getFileBadNameR = return $ TypedContent "ignored" $ ContentFile (error "filebadname") Nothing  goodBuilderContent :: Builder-goodBuilderContent = Data.Monoid.mconcat $ replicate 100 $ "This is a test\n"+goodBuilderContent = mconcat $ replicate 100 $ "This is a test\n"  getGoodBuilderR :: Handler TypedContent getGoodBuilderR = return $ TypedContent "text/plain" $ toContent goodBuilderContent
test/YesodCoreTest/ErrorHandling/CustomApp.hs view
@@ -1,8 +1,12 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE DeriveAnyClass #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE DeriveAnyClass #-}  -- | a custom app that throws an exception module YesodCoreTest.ErrorHandling.CustomApp@@ -14,8 +18,6 @@     , resourcesCustomApp     ) where --import Yesod.Core.Types import Yesod.Core import qualified UnliftIO.Exception as E 
test/YesodCoreTest/Exceptions.hs view
@@ -1,6 +1,10 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.Exceptions     ( exceptionsTest     , Widget
test/YesodCoreTest/Header.hs view
@@ -1,5 +1,9 @@-{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes,-  TypeFamilies, MultiParamTypeClasses, ViewPatterns #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}  module YesodCoreTest.Header   ( headerTest
test/YesodCoreTest/InternalRequest.hs view
@@ -1,20 +1,20 @@ {-# LANGUAGE OverloadedStrings #-}+ module YesodCoreTest.InternalRequest (internalRequestTest) where  import Data.List (nub) import Network.Wai as W import Yesod.Core.Internal (randomString, parseWaiRequest) import Test.Hspec-import Data.Monoid (mempty) import Data.Map (singleton) import Yesod.Core import Data.Word (Word64) import System.IO.Unsafe (unsafePerformIO) import Control.Monad (replicateM)-import System.Random+import System.Random (randomIO)  gen :: IO Int-gen = getStdRandom next+gen = randomIO  randomStringSpecs :: Spec randomStringSpecs = describe "Yesod.Internal.Request.randomString" $ do@@ -57,7 +57,7 @@  noDisabledToken :: Bool noDisabledToken = reqToken r == Nothing where-  r = parseWaiRequest' defaultRequest Data.Monoid.mempty False 1000+  r = parseWaiRequest' defaultRequest mempty False 1000  ignoreDisabledToken :: Bool ignoreDisabledToken = reqToken r == Nothing where
test/YesodCoreTest/JsAttributes.hs view
@@ -1,6 +1,10 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.JsAttributes     ( specs       -- To avoid unused warning@@ -34,4 +38,3 @@  runner :: YesodDispatch master => master -> Session () -> IO () runner app f = toWaiApp app >>= runSession f-
test/YesodCoreTest/JsLoader.hs view
@@ -1,6 +1,10 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.JsLoader     ( specs     , Widget
test/YesodCoreTest/JsLoaderSites/Bottom.hs view
@@ -1,6 +1,10 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.JsLoaderSites.Bottom     ( B(..)     , Widget
test/YesodCoreTest/Json.hs view
@@ -1,4 +1,10 @@-{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, TypeFamilies, MultiParamTypeClasses, ViewPatterns #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+ module YesodCoreTest.Json     ( specs     , Widget
test/YesodCoreTest/Links.hs view
@@ -1,6 +1,11 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE FlexibleInstances, ViewPatterns #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+ module YesodCoreTest.Links     ( linksTest     , Widget
test/YesodCoreTest/LiteApp.hs view
@@ -1,3 +1,4 @@+{-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} module YesodCoreTest.LiteApp (specs) where  import Yesod.Core
test/YesodCoreTest/Media.hs view
@@ -1,7 +1,12 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE FlexibleInstances, ViewPatterns #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-} {-# OPTIONS_GHC -fno-warn-orphans #-}+ module YesodCoreTest.Media (mediaTest, Widget) where  import Test.Hspec
test/YesodCoreTest/MediaData.hs view
@@ -1,6 +1,10 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.MediaData where  import Yesod.Core
test/YesodCoreTest/Meta.hs view
@@ -5,6 +5,7 @@ {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-}+{-# OPTIONS_GHC -Wno-unused-top-binds #-}  module YesodCoreTest.Meta     ( metaTest
test/YesodCoreTest/NoOverloadedStrings.hs view
@@ -1,7 +1,13 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE FlexibleInstances, ViewPatterns #-} {-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} -- the module name is a lie!!!+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+{-# LANGUAGE TypeOperators #-}+ module YesodCoreTest.NoOverloadedStrings     ( noOverloadedTest     , Widget@@ -14,7 +20,6 @@ import Yesod.Core import Network.Wai import Network.Wai.Test-import Data.Monoid (mempty) import qualified Data.Text as T import qualified Data.ByteString.Lazy.Char8 as L8 @@ -65,7 +70,7 @@ case_sanity :: IO () case_sanity = runner $ do     res <- request defaultRequest-    assertBody Data.Monoid.mempty res+    assertBody mempty res  case_subsite :: IO () case_subsite = runner $ do
test/YesodCoreTest/NoOverloadedStringsSub.hs view
@@ -1,8 +1,12 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-} -- hah, the test should be renamed...+{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE RankNTypes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE ViewPatterns #-}-{-# LANGUAGE OverloadedStrings #-} -- hah, the test should be renamed...+ -- Not actually a problem, we're now requiring overloaded strings, we just need -- to make the docs more explicit about it. module YesodCoreTest.NoOverloadedStringsSub where
test/YesodCoreTest/ParameterizedSite.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+ module YesodCoreTest.ParameterizedSite     ( parameterizedSiteTest     ) where@@ -17,7 +18,7 @@ parameterizedSiteTest :: Spec parameterizedSiteTest = describe "Polymorphic Yesod sites" $ do     it "Polymorphic unconstrained stub" $ runStub (PolyAny ())-    it "Polymorphic stub with Show" $ runStub' "1337" (PolyShow 1337)+    it "Polymorphic stub with Show" $ runStub' "1337" (PolyShow (1337 :: Int))     it "Polymorphic unconstrained stub, old-style" $ runStub (Compat () ())  runStub :: YesodDispatch a => a -> IO ()
test/YesodCoreTest/ParameterizedSite/Compat.hs view
@@ -1,7 +1,12 @@-{-# LANGUAGE-    TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses-  , OverloadedStrings, StandaloneDeriving, FlexibleInstances-  #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -Wno-unused-top-binds #-}+ module YesodCoreTest.ParameterizedSite.Compat     ( Compat (..)     ) where@@ -24,4 +29,3 @@         <p>             Stub     |]-
test/YesodCoreTest/ParameterizedSite/PolyAny.hs view
@@ -1,7 +1,12 @@-{-# LANGUAGE-    TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses-  , OverloadedStrings, StandaloneDeriving, FlexibleInstances-  #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -Wno-unused-top-binds #-}+ module YesodCoreTest.ParameterizedSite.PolyAny     ( PolyAny (..)     ) where@@ -23,4 +28,3 @@         <p>             Stub     |]-
test/YesodCoreTest/ParameterizedSite/PolyShow.hs view
@@ -1,7 +1,12 @@-{-# LANGUAGE-    TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses-  , OverloadedStrings, StandaloneDeriving, FlexibleInstances-  #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -Wno-unused-top-binds #-}+ module YesodCoreTest.ParameterizedSite.PolyShow     ( PolyShow (..)     ) where@@ -25,4 +30,3 @@             <p>                 Stub #{show x}         |]-
test/YesodCoreTest/RawResponse.hs view
@@ -1,4 +1,10 @@-{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, TypeFamilies, MultiParamTypeClasses, ScopedTypeVariables #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.RawResponse     ( specs     , Widget
test/YesodCoreTest/Redirect.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE QuasiQuotes, TemplateHaskell, TypeFamilies, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.Redirect     ( specs     , Widget
test/YesodCoreTest/Reps.hs view
@@ -1,4 +1,10 @@-{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, TypeFamilies, MultiParamTypeClasses, ViewPatterns #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+ module YesodCoreTest.Reps     ( specs     , Widget
test/YesodCoreTest/RequestBodySize.hs view
@@ -1,6 +1,10 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.RequestBodySize     ( specs     , Widget
test/YesodCoreTest/Ssl.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.Ssl ( sslOnlySpec, unsecSpec, sameSiteSpec ) where import qualified YesodCoreTest.StubSslOnly as Ssl import qualified YesodCoreTest.StubLaxSameSite as LaxSameSite@@ -43,7 +48,7 @@     cookiesIn r =       DL.map         (Cookie.parseSetCookie . snd)-        (DL.filter (("Set-Cookie"==) . fst) $ simpleHeaders r)+        (DL.filter (("Set-Cookie" ==) . fst) $ simpleHeaders r)  sslOnlySpec :: Spec sslOnlySpec = describe "A Yesod application with sslOnly on" $ do
test/YesodCoreTest/Streaming.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+ module YesodCoreTest.Streaming (specs) where  import Yesod.Core
test/YesodCoreTest/StubLaxSameSite.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.StubLaxSameSite     ( App ( App )     , Widget
test/YesodCoreTest/StubSslOnly.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.StubSslOnly     ( App ( App )     , Widget
test/YesodCoreTest/StubStrictSameSite.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.StubStrictSameSite     ( App ( App )     , Widget
test/YesodCoreTest/StubUnsecured.hs view
@@ -1,4 +1,9 @@-{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell, MultiParamTypeClasses, OverloadedStrings #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+ module YesodCoreTest.StubUnsecured     ( App ( App )     , Widget
test/YesodCoreTest/SubSub.hs view
@@ -1,9 +1,10 @@-{-# LANGUAGE TemplateHaskell #-}-{-# LANGUAGE QuasiQuotes #-}-{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# OPTIONS_GHC -Wno-orphans #-}  module YesodCoreTest.SubSub where 
test/YesodCoreTest/SubSubData.hs view
@@ -1,5 +1,5 @@-{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-}  module YesodCoreTest.SubSubData where
test/YesodCoreTest/WaiSubsite.hs view
@@ -1,4 +1,10 @@-{-# LANGUAGE CPP, QuasiQuotes, TemplateHaskell, TypeFamilies, MultiParamTypeClasses, OverloadedStrings, ViewPatterns #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+ module YesodCoreTest.WaiSubsite     ( specs     , Widget
test/YesodCoreTest/Widget.hs view
@@ -1,6 +1,11 @@-{-# LANGUAGE QuasiQuotes, TypeFamilies, TemplateHaskell, MultiParamTypeClasses #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE FlexibleInstances, ViewPatterns #-}+{-# LANGUAGE QuasiQuotes #-}+{-# LANGUAGE TemplateHaskell #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE ViewPatterns #-}+ module YesodCoreTest.Widget     ( widgetTest     , resourcesY
yesod-core.cabal view
@@ -1,5 +1,5 @@ name:            yesod-core-version:         1.6.27.0+version:         1.6.27.1 license:         MIT license-file:    LICENSE author:          Michael Snoyman <michael@snoyman.com>@@ -25,7 +25,7 @@     default-language: Haskell2010     hs-source-dirs: src -    build-depends:   base                  >= 4.10     && < 5+    build-depends:   base                  >= 4.11     && < 5                    , aeson                 >= 1.0                    , attoparsec-aeson      >= 2.1                    , auto-update@@ -50,7 +50,7 @@                    , parsec                >= 2        && < 3.2                    , path-pieces           >= 0.1.2    && < 0.3                    , primitive             >= 0.6-                   , random                >= 1.0.0.2  && < 1.3+                   , random                >= 1.0.0.2  && < 1.4                    , resourcet             >= 1.2                    , shakespeare           >= 2.0                    , template-haskell      >= 2.11@@ -186,7 +186,7 @@     cpp-options:   -DTEST     if os(windows)         cpp-options: -DWINDOWS-    build-depends:  base < 5+    build-depends:  base >= 4.11 && < 5                   , async                   , bytestring                   , clientsession