Skip to content
Snippets Groups Projects
Commit 8fb772eb authored by Jens Nolte's avatar Jens Nolte
Browse files

Don't generate empty high-level api types

parent 4179fb23
No related branches found
No related tags found
No related merge requests found
...@@ -90,12 +90,15 @@ tellQs = tell <=< lift ...@@ -90,12 +90,15 @@ tellQs = tell <=< lift
interfaceDecs :: InterfaceSpec -> Q ([Dec], [Dec]) interfaceDecs :: InterfaceSpec -> Q ([Dec], [Dec])
interfaceDecs interface = do interfaceDecs interface = do
public <- execWriterT do public <- execWriterT do
tellQ requestRecordD
tellQ eventRecordD
internals <- execWriterT do
tellQ $ dataD (pure []) iName [] Nothing [] [derivingInterfaceClient, derivingInterfaceServer] tellQ $ dataD (pure []) iName [] Nothing [] [derivingInterfaceClient, derivingInterfaceServer]
tellQ $ instanceD (pure []) [t|IsInterface $iT|] instanceDecs tellQ $ instanceD (pure []) [t|IsInterface $iT|] instanceDecs
when (length interface.requests > 0) do
tellQ requestRecordD
when (length interface.events > 0) do
tellQ eventRecordD
internals <- execWriterT do
when (length interface.requests > 0) do when (length interface.requests > 0) do
tellQs $ messageTypeDecs rTypeName requestContexts tellQs $ messageTypeDecs rTypeName requestContexts
...@@ -108,8 +111,8 @@ interfaceDecs interface = do ...@@ -108,8 +111,8 @@ interfaceDecs interface = do
iName = interfaceN interface iName = interfaceN interface
iT = interfaceT interface iT = interfaceT interface
instanceDecs = [ instanceDecs = [
tySynInstD (tySynEqn Nothing (appT (conT ''Requests) iT) (requestsT interface)), tySynInstD (tySynEqn Nothing (appT (conT ''Requests) iT) (orVoid (requestsT interface))),
tySynInstD (tySynEqn Nothing (appT (conT ''Events) iT) (eventsT interface)), tySynInstD (tySynEqn Nothing (appT (conT ''Events) iT) (orVoid (eventsT interface))),
tySynInstD (tySynEqn Nothing (appT (conT ''WireRequest) iT) wireRequestT), tySynInstD (tySynEqn Nothing (appT (conT ''WireRequest) iT) wireRequestT),
tySynInstD (tySynEqn Nothing (appT (conT ''WireEvent) iT) eT), tySynInstD (tySynEqn Nothing (appT (conT ''WireEvent) iT) eT),
tySynInstD (tySynEqn Nothing (appT (conT ''InterfaceName) iT) (litT (strTyLit interface.name))), tySynInstD (tySynEqn Nothing (appT (conT ''InterfaceName) iT) (litT (strTyLit interface.name))),
...@@ -182,14 +185,17 @@ interfaceT interface = conT (interfaceN interface) ...@@ -182,14 +185,17 @@ interfaceT interface = conT (interfaceN interface)
requestsName :: InterfaceSpec -> Name requestsName :: InterfaceSpec -> Name
requestsName interface = mkName $ "Requests_" <> interface.name requestsName interface = mkName $ "Requests_" <> interface.name
requestsT :: InterfaceSpec -> Q Type requestsT :: InterfaceSpec -> Maybe (Q Type)
requestsT interface = conT (requestsName interface) requestsT interface = if (length interface.requests) > 0 then Just (conT (requestsName interface)) else Nothing
eventsName :: InterfaceSpec -> Name eventsName :: InterfaceSpec -> Name
eventsName interface = mkName $ "Events_" <> interface.name eventsName interface = mkName $ "Events_" <> interface.name
eventsT :: InterfaceSpec -> Q Type eventsT :: InterfaceSpec -> Maybe (Q Type)
eventsT interface = conT (eventsName interface) eventsT interface = if (length interface.events) > 0 then Just (conT (eventsName interface)) else Nothing
orVoid :: Maybe (Q Type) -> Q Type
orVoid = fromMaybe [t|Void|]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment