From 0db056534c4efb968249961b08df2c4b1f7873a1 Mon Sep 17 00:00:00 2001 From: Tom Sydney Kerckhove Date: Fri, 21 May 2021 08:41:42 +0200 Subject: [PATCH] breadcrumbs: guard refactor --- yesod-core/src/Yesod/Core/Class/Breadcrumbs.hs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/yesod-core/src/Yesod/Core/Class/Breadcrumbs.hs b/yesod-core/src/Yesod/Core/Class/Breadcrumbs.hs index c1e7b5af..9773af1d 100644 --- a/yesod-core/src/Yesod/Core/Class/Breadcrumbs.hs +++ b/yesod-core/src/Yesod/Core/Class/Breadcrumbs.hs @@ -16,7 +16,7 @@ class YesodBreadcrumbs site where -- | Gets the title of the current page and the hierarchy of parent pages, -- along with their respective titles. -breadcrumbs :: (YesodBreadcrumbs site, Eq (Route site)) => HandlerFor site (Text, [(Route site, Text)]) +breadcrumbs :: (YesodBreadcrumbs site, Show (Route site), Eq (Route site)) => HandlerFor site (Text, [(Route site, Text)]) breadcrumbs = do x <- getCurrentRoute case x of @@ -27,10 +27,8 @@ breadcrumbs = do return (title, z) where go back Nothing = return back - go back (Just this) = do - (title, next) <- breadcrumb this - if this `elem` map fst back - then - error $ "yesod-core: infinite recursion in breadcrumbs at " ++ show title - else + go back (Just this) + | this `elem` map fst back = error $ "yesod-core: infinite recursion in breadcrumbs at " ++ show this + | otherwise = do + (title, next) <- breadcrumb this go ((this, title) : back) next