summaryrefslogtreecommitdiff
path: root/src/Script/Module.hs
blob: 3ea59bfbcb85cce48331df3cc4473126b3e56bbe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module Script.Module (
    Module(..),
    ModuleName(..), textModuleName,
    moduleExportedDefinitions,
) where

import Script.Expr
import Test

data Module = Module
    { moduleName :: ModuleName
    , moduleTests :: [ Test ]
    , moduleDefinitions :: [ ( VarName, SomeExpr ) ]
    , moduleExports :: [ VarName ]
    }

moduleExportedDefinitions :: Module -> [ ( VarName, ( FqVarName, SomeExpr )) ]
moduleExportedDefinitions Module {..} =
    map (\( var, expr ) -> ( var, ( GlobalVarName moduleName var, expr ))) $
        filter ((`elem` moduleExports) . fst) moduleDefinitions