From e0e1c1d7573fc5251fe537314b6a6cfefae09e39 Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Sun, 11 Dec 2022 18:45:46 +0200 Subject: Ensure that imports do not overwrite symbols --- test/Spec.hs | 9 ++++++++- test/TestUtils.hs | 3 ++- test/scripts/import1.milch | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 test/scripts/import1.milch (limited to 'test') diff --git a/test/Spec.hs b/test/Spec.hs index e522c9c..0059ea7 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -144,7 +144,14 @@ e2eTests = testGroup "e2e" [ (gotASTs, _) <- expectSuccessL env $ runInlineScript "" script1 let expectedLastAST = astBoolean True - assertEqual "" expectedLastAST (last gotASTs) + assertEqual "" expectedLastAST (last gotASTs), + + do let env = M.empty + script1 <- readFile "test/scripts/import1.milch" + got <- expectErrorL env $ runInlineScript "" script1 + + let expected = "error: import shadows symbols: id" + assertBool "" (expected `L.isInfixOf` got) ] testGroup label xs = TestLabel label $ TestList $ map TestCase xs diff --git a/test/TestUtils.hs b/test/TestUtils.hs index 89bc6e6..42352e5 100644 --- a/test/TestUtils.hs +++ b/test/TestUtils.hs @@ -4,6 +4,7 @@ module TestUtils where import qualified Data.Map as M import qualified Data.Bifunctor as B import Utils +import Builtins ( builtinModule ) testConfig :: Config testConfig = Config { @@ -39,7 +40,7 @@ expectErrorL env lc = Right (val, _) -> error $ "unexpected success: " ++ show val makeEnv :: [(String, AST)] -> Env -makeEnv = M.fromList . map (B.second Regular) +makeEnv = M.fromList . map (B.second (\v -> (builtinModule, Regular v))) ast :: ASTNode -> AST ast node = makeNonsenseAST node diff --git a/test/scripts/import1.milch b/test/scripts/import1.milch new file mode 100644 index 0000000..bd3d111 --- /dev/null +++ b/test/scripts/import1.milch @@ -0,0 +1,2 @@ +(let id 123) +(import "core/common") -- cgit v1.3