From 82e4bdcaaefa88913a0dacf3496747251909219f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roman=20Smr=C5=BE?= Date: Mon, 20 Feb 2023 19:50:36 +0100 Subject: For statement --- src/Main.hs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/Main.hs') diff --git a/src/Main.hs b/src/Main.hs index 81fb04f..404ecec 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -172,7 +172,7 @@ testStepGuard sline expr = do evalSteps :: [TestStep] -> TestRun () evalSteps = mapM_ $ \case - Let (SourceLine sline) name expr inner -> do + Let (SourceLine sline) (TypedVarName name) expr inner -> do cur <- asks (lookup name . tsVars . snd) when (isJust cur) $ do outLine OutputError Nothing $ T.pack "variable '" `T.append` textVarName name `T.append` T.pack "' already exists on " `T.append` sline @@ -180,6 +180,15 @@ evalSteps = mapM_ $ \case value <- eval expr withVar name value $ evalSteps inner + For (SourceLine sline) (TypedVarName name) expr inner -> do + cur <- asks (lookup name . tsVars . snd) + when (isJust cur) $ do + outLine OutputError Nothing $ T.pack "variable '" `T.append` textVarName name `T.append` T.pack "' already exists on " `T.append` sline + throwError Failed + value <- eval expr + forM_ value $ \i -> do + withVar name i $ evalSteps inner + DeclNode name@(TypedVarName vname) net inner -> do createNode net (Left name) $ \node -> do withVar vname node $ evalSteps inner -- cgit v1.2.3