From a5e12ca090a67b6692fd04bb17723a57b12edb4d Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Thu, 9 Sep 2021 19:06:22 +0200 Subject: [PATCH] Move messageInstanceD out of where block --- src/Quasar/Wayland/Protocol/TH.hs | 35 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/Quasar/Wayland/Protocol/TH.hs b/src/Quasar/Wayland/Protocol/TH.hs index e89bd81..87f36f7 100644 --- a/src/Quasar/Wayland/Protocol/TH.hs +++ b/src/Quasar/Wayland/Protocol/TH.hs @@ -102,23 +102,24 @@ interfaceDec interface = execWriterT do eConName (EventSpec event) = mkName $ "E_" <> interface.name <> "_" <> event.name eCon :: EventSpec -> Q Con eCon event = normalC (eConName event) [] - messageInstanceD :: Q Type -> [(MessageSpec, Name)] -> Q Dec - messageInstanceD t messages = instanceD (pure []) [t|IsMessage $t|] [opcodeNameD, showMessageD, getMessageD, putMessageD] - where - opcodeNameD :: Q Dec - opcodeNameD = funD 'opcodeName (opcodeNameClauseD <$> messages) - opcodeNameClauseD :: (MessageSpec, Name) -> Q Clause - opcodeNameClauseD (msg, conName) = clause [litP (integerL (fromIntegral msg.opcode))] (normalB ([|Just $(stringE msg.name)|])) [] - showMessageD :: Q Dec - showMessageD = funD 'showMessage (showMessageClauseD <$> messages) - showMessageClauseD :: (MessageSpec, Name) -> Q Clause - showMessageClauseD (msg, conName) = clause [conP conName []] (normalB (stringE msg.name)) [] - getMessageD :: Q Dec - getMessageD = funD 'getMessage (getMessageClauseD <$> messages) - getMessageClauseD :: (MessageSpec, Name) -> Q Clause - getMessageClauseD (msg, conName) = clause [[p|_object|], litP (integerL (fromIntegral msg.opcode))] (normalB ([|$(conE conName) <$ dropRemaining|])) [] - putMessageD :: Q Dec - putMessageD = funD 'putMessage [clause [] (normalB [|undefined|]) []] + +messageInstanceD :: Q Type -> [(MessageSpec, Name)] -> Q Dec +messageInstanceD t messages = instanceD (pure []) [t|IsMessage $t|] [opcodeNameD, showMessageD, getMessageD, putMessageD] + where + opcodeNameD :: Q Dec + opcodeNameD = funD 'opcodeName (opcodeNameClauseD <$> messages) + opcodeNameClauseD :: (MessageSpec, Name) -> Q Clause + opcodeNameClauseD (msg, conName) = clause [litP (integerL (fromIntegral msg.opcode))] (normalB ([|Just $(stringE msg.name)|])) [] + showMessageD :: Q Dec + showMessageD = funD 'showMessage (showMessageClauseD <$> messages) + showMessageClauseD :: (MessageSpec, Name) -> Q Clause + showMessageClauseD (msg, conName) = clause [conP conName []] (normalB (stringE msg.name)) [] + getMessageD :: Q Dec + getMessageD = funD 'getMessage (getMessageClauseD <$> messages) + getMessageClauseD :: (MessageSpec, Name) -> Q Clause + getMessageClauseD (msg, conName) = clause [[p|_object|], litP (integerL (fromIntegral msg.opcode))] (normalB ([|$(conE conName) <$ dropRemaining|])) [] + putMessageD :: Q Dec + putMessageD = funD 'putMessage [clause [] (normalB [|undefined|]) []] interfaceN :: InterfaceSpec -> Name interfaceN interface = mkName $ "I_" <> interface.name -- GitLab