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 --- src/Utils.hs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/Utils.hs') diff --git a/src/Utils.hs b/src/Utils.hs index 1eabd72..d1a1642 100644 --- a/src/Utils.hs +++ b/src/Utils.hs @@ -10,7 +10,8 @@ import qualified Data.Char as C import qualified Data.Text as T import qualified FarmHash as FH import qualified Data.ByteString.UTF8 as BSU -import Data.Word as W +import qualified Data.Maybe as MB +import qualified Data.Word as W -- TYPES @@ -39,7 +40,8 @@ data Binding a | Memoized (M.Map [a] a) a deriving Show -type Env = M.Map String (Binding AST) +type SourceModule = String +type Env = M.Map String (SourceModule, Binding AST) type Scope = [(String, AST)] type AtomMap = M.Map LAtomRef AST @@ -68,6 +70,12 @@ getConfig = do s <- get return $ stateConfig s +getCurrentModule :: LContext SourceModule +getCurrentModule = do + config <- getConfig + let curMod = configScriptFileName config $> MB.fromMaybe "" + return curMod + putEnv :: Env -> LContext () putEnv env = do modify (\s -> s { stateEnv = env }) @@ -75,7 +83,8 @@ putEnv env = do insertEnv :: String -> Binding AST -> LContext () insertEnv k v = do env <- getEnv - putEnv $ M.insert k v env + currentModule <- getCurrentModule + putEnv $ M.insert k (currentModule, v) env incrementDepth :: LContext () incrementDepth = -- cgit v1.3