diff options
| -rw-r--r-- | ast/CC/Context.hs | 4 | ||||
| -rw-r--r-- | backend/CC/Backend/Dumb.hs | 4 | ||||
| -rw-r--r-- | compcomp.cabal | 4 | ||||
| -rw-r--r-- | typecheck/CC/Typecheck.hs | 2 | 
4 files changed, 9 insertions, 5 deletions
diff --git a/ast/CC/Context.hs b/ast/CC/Context.hs index b86685d..68378d7 100644 --- a/ast/CC/Context.hs +++ b/ast/CC/Context.hs @@ -1,5 +1,7 @@  module CC.Context where +import Data.Map.Strict (Map) +  import CC.AST.Typed @@ -7,4 +9,4 @@ import CC.AST.Typed  data Context = Context FilePath Builtins  -- | Information about builtins supported by the enabled backend -data Builtins = Builtins [(Name, Type)] +data Builtins = Builtins (Map Name Type) diff --git a/backend/CC/Backend/Dumb.hs b/backend/CC/Backend/Dumb.hs index 7982a06..3210dab 100644 --- a/backend/CC/Backend/Dumb.hs +++ b/backend/CC/Backend/Dumb.hs @@ -1,11 +1,13 @@  module CC.Backend.Dumb(builtins) where +import qualified Data.Map.Strict as Map +  import CC.AST.Typed  import CC.Context  builtins :: Builtins -builtins = Builtins +builtins = Builtins . Map.fromList $      [ ("print", TFun TInt (TTup []))      , ("fst", TFun (TTup [TyVar 1, TyVar 2]) (TyVar 1))      , ("snd", TFun (TTup [TyVar 1, TyVar 2]) (TyVar 2)) diff --git a/compcomp.cabal b/compcomp.cabal index 0b65ac1..9e941aa 100644 --- a/compcomp.cabal +++ b/compcomp.cabal @@ -32,13 +32,13 @@ library               cc-typecheck  library               cc-backend-dumb      import:           deps      hs-source-dirs:   backend -    build-depends:    cc-ast, cc-utils +    build-depends:    containers, cc-ast, cc-utils      exposed-modules:  CC.Backend.Dumb  library               cc-ast      import:           deps      hs-source-dirs:   ast -    build-depends:    cc-utils +    build-depends:    containers, cc-utils      exposed-modules:  CC.AST.Source, CC.AST.Typed, CC.Context  library               cc-utils diff --git a/typecheck/CC/Typecheck.hs b/typecheck/CC/Typecheck.hs index 8803a62..f61103e 100644 --- a/typecheck/CC/Typecheck.hs +++ b/typecheck/CC/Typecheck.hs @@ -193,7 +193,7 @@ inferList env (expr : exprs) = do  runPass :: Context -> S.Program -> Either TCError T.Program  runPass (Context _ (Builtins builtins)) prog = -    let env = Env (Map.fromList [(name, generalise emptyEnv ty) | (name, ty) <- builtins]) +    let env = Env (Map.map (generalise emptyEnv) builtins)      in runTM (typeCheck env prog)  typeCheck :: Env -> S.Program -> TM T.Program  | 
