sourceModuleEndToEnd.tri (2364B)
1 !import "source.module" !Local 2 !import "io" !Local 3 !import "prelude" !Local 4 root = "__ROOT__" 5 6 moduleSay text = mapIO (putStr text) (_ : ok t t) 7 8 moduleCheck condition = 9 pure (if condition (ok t t) (err "wrong executable tree" t)) 10 11 moduleScenario = do onOk_ 12 sourceBase <- readFile "demos/modules/base.tri" 13 base <- sourceModuleBuild root sourceBase 14 escaped <- sourceModuleLoadSelected root base "perc%ent" 15 _ <- moduleCheck (equal? escaped 7) 16 _ <- moduleSay (append "module-base=" (append base "\n")) 17 _ <- sourceModulePinAlias root "base" base 18 sourcePrelude <- readFile "demos/modules/prelude.tri" 19 prelude <- sourceModuleBuild root sourcePrelude 20 _ <- sourceModulePinAlias root "prelude" prelude 21 sourceApp <- readFile "demos/modules/app.tri" 22 app <- sourceModuleBuild root sourceApp 23 tree <- sourceModuleLoadSelected root app "main" 24 _ <- moduleCheck (equal? tree 42) 25 sourceOpen <- readFile "demos/modules/open.tri" 26 open <- sourceModuleBuild root sourceOpen 27 opened <- sourceModuleLoadSelected root open "main" 28 _ <- moduleCheck (equal? opened 42) 29 public <- sourceModuleLoadSelected root prelude "answer" 30 _ <- moduleCheck (equal? public 42) 31 _ <- moduleSay (append "module-42=" (append app "\n")) 32 sourceRevision <- readFile "demos/modules/revised.tri" 33 _ <- moduleSay "revision-read\n" 34 revised <- onResult_ (sourceModuleBuild root sourceRevision) 35 (_ : pure (err "revision build" t)) 36 (value : pure (ok value t)) 37 _ <- moduleSay (append "module-revised=" (append revised "\n")) 38 _ <- moduleSay "revised-built\n" 39 _ <- sourceModulePinAlias root "base" revised 40 _ <- moduleSay "revised-aliased\n" 41 oldTree <- sourceModuleLoadSelected root app "main" 42 _ <- moduleCheck (equal? oldTree 42) 43 _ <- moduleSay "old-pinned-ok\n" 44 newPrelude <- sourceModuleBuild root sourcePrelude 45 _ <- moduleSay (append "module-prelude43=" (append newPrelude "\n")) 46 _ <- moduleSay "new-prelude-built\n" 47 _ <- sourceModulePinAlias root "prelude" newPrelude 48 updated <- sourceModuleBuild root sourceApp 49 updatedTree <- sourceModuleLoadSelected root updated "main" 50 _ <- moduleCheck (equal? updatedTree 43) 51 _ <- moduleSay (append "module-43=" (append updated "\n")) 52 pure (ok t t) 53 54 main = io (onResult_ moduleScenario 55 (problem : putStrLn (append "module scenario failed: " problem)) 56 (_ : putStrLn "module-scenario-ok")) 57 main