From c993c83b90a63dd7d6e6cabccaf5ea9c19b54786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 29 Sep 2025 20:40:05 +0200 Subject: Avoid using Expr Maybe when parsing shell pipeline --- src/Parser/Shell.hs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src/Parser') diff --git a/src/Parser/Shell.hs b/src/Parser/Shell.hs index 22d47ed..9dbd4e8 100644 --- a/src/Parser/Shell.hs +++ b/src/Parser/Shell.hs @@ -84,14 +84,17 @@ parseCommand = label "shell statement" $ do <*> args <*> pure line -parsePipeline :: Expr (Maybe ShellPipeline) -> TestParser (Expr ShellPipeline) -parsePipeline upper = do +parsePipeline :: Maybe (Expr ShellPipeline) -> TestParser (Expr ShellPipeline) +parsePipeline mbupper = do cmd <- parseCommand - let pipeline = ShellPipeline <$> cmd <*> upper + let pipeline = + case mbupper of + Nothing -> fmap (\ecmd -> ShellPipeline ecmd Nothing) cmd + Just upper -> liftA2 (\ecmd eupper -> ShellPipeline ecmd (Just eupper)) cmd upper choice [ do osymbol "|" - parsePipeline (Just <$> pipeline) + parsePipeline (Just pipeline) , do return pipeline @@ -100,7 +103,7 @@ parsePipeline upper = do parseStatement :: TestParser (Expr [ ShellStatement ]) parseStatement = do line <- getSourceLine - fmap ((: []) . flip ShellStatement line) <$> parsePipeline (pure Nothing) + fmap ((: []) . flip ShellStatement line) <$> parsePipeline Nothing shellScript :: TestParser (Expr ShellScript) shellScript = do -- cgit v1.2.3