on master help sign in
Generate different shaped data for `main` programs
commitdf2ec9b8ccf24742503e3ae1f793192e20304356 authorEvan Czaplicki <info@elm-lang.org> dateFri 8 Apr 2016, 18:10 (11 years ago) parentfc149d7
1 file changed+23−9
src/Generate/JavaScript/Expression.hs+23−9
src/Generate/JavaScript/Expression.hs+23−9
@@ -10,6 +10,7 @@ import AST.Expression.General as Expr (Main(..))
1010import AST.Expression.Optimized as Opt
1111import qualified AST.Literal as L
1212import qualified AST.Module.Name as ModuleName
13+import qualified AST.Type as Type
1314import qualified AST.Variable as Var
1415import Generate.JavaScript.Helpers as Help
1516import qualified Generate.JavaScript.BuiltIn as BuiltIn
@@ -216,15 +217,7 @@ generateCode expr =
216217 jsExpr $ BuiltIn.foreignSub name jsDecoder
217218
218219 Program kind body ->
219− case kind of
220− Expr.VDom ->
221− generateCode (Data "vdom" [body])
222−
223− Expr.NoFlags ->
224− generateCode (Data "no-flags" [body])
225−
226− Expr.Flags tipe ->
227− generateCode (Data "flags" [body, Foreign.decode tipe])
220+ generateProgram kind body
228221
229222 GLShader _uid src _tipe ->
230223 jsExpr $ ObjectLit () [(PropString () "src", Literal.literal (L.Str src))]
@@ -235,6 +228,27 @@ generateCode expr =
235228
236229
237230
231+-- PROGRAMS
232+
233+
234+generateProgram :: Expr.Main Type.Canonical -> Opt.Expr -> State Int Code
235+generateProgram kind body =
236+ let
237+ gen fields =
238+ generateCode $ Record (("main", body) : fields)
239+ in
240+ case kind of
241+ Expr.VDom ->
242+ gen []
243+
244+ Expr.NoFlags ->
245+ gen []
246+
247+ Expr.Flags tipe ->
248+ gen [ ("flags", Foreign.decode tipe) ]
249+
250+
251+
238252-- FUNCTIONS
239253
240254