@@ -2,43 +2,12 @@ module Main where
22
33import Prelude
44
5−import Control.Alternative (empty)
6−import Data.Argonaut as Json
7−import Data.Bifunctor (lmap)
8−import Data.Either (Either(..))
9−import Dodo (plainText)
10−import Dodo as Dodo
115import Effect (Effect)
12−import Effect.Aff (Aff, launchAff_)
13−import Effect.Class.Console (error, log)
14−import PureScript.Backend.Chez.Convert (codegenModule)
15−import PureScript.Backend.Chez.Syntax as S
16−import PureScript.Backend.Optimizer.Builder (buildModules)
17−import PureScript.Backend.Optimizer.CoreFn (Ann, Module)
18−import PureScript.Backend.Optimizer.CoreFn.Json (decodeModule)
19−
20−simpleCoreFn :: String
21−simpleCoreFn =
22− """
23−{"builtWith":"0.15.8","comments":[],"decls":[{"annotation":{"meta":null,"sourceSpan":{"end":[9,12],"start":[5,1]}},"bindType":"NonRec","expression":{"annotation":{"meta":null,"sourceSpan":{"end":[9,12],"start":[6,3]}},"binds":[{"annotation":{"meta":null,"sourceSpan":{"end":[7,18],"start":[7,5]}},"bindType":"NonRec","expression":{"abstraction":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[7,12],"start":[7,9]}},"type":"Var","value":{"identifier":"add","moduleName":["Simple"]}},"annotation":{"meta":null,"sourceSpan":{"end":[7,15],"start":[7,9]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[7,15],"start":[7,13]}},"type":"Literal","value":{"literalType":"IntLiteral","value":42}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[7,18],"start":[7,9]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[7,18],"start":[7,16]}},"type":"Literal","value":{"literalType":"IntLiteral","value":42}},"type":"App"},"identifier":"a"}],"expression":{"abstraction":{"abstraction":{"annotation":{"meta":{"metaType":"IsForeign"},"sourceSpan":{"end":[9,8],"start":[9,5]}},"type":"Var","value":{"identifier":"add","moduleName":["Simple"]}},"annotation":{"meta":null,"sourceSpan":{"end":[9,10],"start":[9,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[9,10],"start":[9,9]}},"type":"Var","value":{"identifier":"a","sourcePos":[7,5]}},"type":"App"},"annotation":{"meta":null,"sourceSpan":{"end":[9,12],"start":[9,5]}},"argument":{"annotation":{"meta":null,"sourceSpan":{"end":[9,12],"start":[9,11]}},"type":"Var","value":{"identifier":"a","sourcePos":[7,5]}},"type":"App"},"type":"Let"},"identifier":"notBasic"}],"exports":["add","notBasic"],"foreign":["add"],"imports":[{"annotation":{"meta":null,"sourceSpan":{"end":[9,12],"start":[1,1]}},"moduleName":["Prim"]},{"annotation":{"meta":null,"sourceSpan":{"end":[9,12],"start":[1,1]}},"moduleName":["Simple"]}],"moduleName":["Simple"],"modulePath":"src/Simple.purs","reExports":{},"sourceSpan":{"end":[9,12],"start":[1,1]}}
24−"""
25−
26−parseCoreFnModule :: String -> Aff (Either String (Module Ann))
27−parseCoreFnModule contents = pure $ lmap Json.printJsonDecodeError <<< decodeModule =<<
28− Json.jsonParser contents
6+import Effect.Aff (launchAff_)
7+import Effect.Class (liftEffect)
8+import Effect.Console (log)
299
3010main :: Effect Unit
3111main = launchAff_ do
32− coreFnModule <- parseCoreFnModule simpleCoreFn
33− case coreFnModule of
34− Left e -> error e
35− Right m -> do
36− pure m # buildModules
37− { directives: empty
38− , foreignSemantics: empty
39− , onCodegenModule: \_ _ backendModule -> do
40− log $ Dodo.print plainText Dodo.twoSpaces $ S.printChezExpr $ codegenModule
41− backendModule
42− pure unit
43− , onPrepareModule: \_ coreFnM -> pure coreFnM
44− }
12+ liftEffect $ log "Not yet implemented. See tests."
13+ pure unit