on master help sign in
javascript: factor out runtime namespace
commit3e80ef5691e0250f03a3babec8db421e433aa10a authorraichoo <raichoo@googlemail.com> dateMon 8 Jul 2013, 20:48 (13 years ago) parenta3515a4
1 file changed+19−18
src/IRTS/CodegenJavaScript.hs+19−18
src/IRTS/CodegenJavaScript.hs+19−18
@@ -20,6 +20,7 @@ import System.Directory
2020
2121idrNamespace :: String
2222idrNamespace = "__IDR__"
23+idrRTNamespace = "__IDRRT__"
2324
2425data JSTarget = Node | JavaScript deriving Eq
2526
@@ -129,16 +130,16 @@ translateName (MN i name) = translateIdentifier name ++ show i
129130
130131translateConstant :: Const -> String
131132translateConstant (I i) = show i
132−translateConstant (BI i) = "__IDRRT__bigInt('" ++ show i ++ "')"
133+translateConstant (BI i) = idrRTNamespace ++ "bigInt('" ++ show i ++ "')"
133134translateConstant (Fl f) = show f
134135translateConstant (Ch c) = show c
135136translateConstant (Str s) = show s
136−translateConstant (AType (ATInt ITNative)) = "__IDRRT__Int"
137−translateConstant StrType = "__IDRRT__String"
138−translateConstant (AType (ATInt ITBig)) = "__IDRRT__Integer"
139−translateConstant (AType ATFloat) = "__IDRRT__Float"
140−translateConstant PtrType = "__IDRRT__Ptr"
141−translateConstant Forgot = "__IDRRT__Forgot"
137+translateConstant (AType (ATInt ITNative)) = idrRTNamespace ++ "Int"
138+translateConstant StrType = idrRTNamespace ++ "String"
139+translateConstant (AType (ATInt ITBig)) = idrRTNamespace ++ "Integer"
140+translateConstant (AType ATFloat) = idrRTNamespace ++ "Float"
141+translateConstant PtrType = idrRTNamespace ++ "Ptr"
142+translateConstant Forgot = idrRTNamespace ++ "Forgot"
142143translateConstant c =
143144 "(function(){throw 'Unimplemented Const: " ++ show c ++ "';})()"
144145
@@ -195,7 +196,7 @@ translateExpression (SApp False name vars) =
195196 createTailcall $ translateFunctionCall name vars
196197
197198translateExpression (SApp True name vars) =
198− "new __IDRRT__Tailcall("
199+ "new " ++ idrRTNamespace ++ "Tailcall("
199200 ++ "function(){\n"
200201 ++ "return " ++ translateFunctionCall name vars
201202 ++ ";\n})"
@@ -290,13 +291,13 @@ translateExpression (SOp op vars)
290291 | (LIntStr ITNative) <- op
291292 , (arg:_) <- vars = "String(" ++ translateVariableName arg ++ ")"
292293 | (LSExt ITNative ITBig) <- op
293− , (arg:_) <- vars = "__IDRRT__bigInt(" ++ translateVariableName arg ++ ")"
294+ , (arg:_) <- vars = idrRTNamespace ++ "bigInt(" ++ translateVariableName arg ++ ")"
294295 | (LTrunc ITBig ITNative) <- op
295296 , (arg:_) <- vars = translateVariableName arg ++ ".valueOf()"
296297 | (LIntStr ITBig) <- op
297298 , (arg:_) <- vars = translateVariableName arg ++ ".toString()"
298299 | (LStrInt ITBig) <- op
299− , (arg:_) <- vars = "__IDRRT__bigInt(" ++ translateVariableName arg ++ ")"
300+ , (arg:_) <- vars = idrRTNamespace ++ "bigInt(" ++ translateVariableName arg ++ ")"
300301 | LFloatStr <- op
301302 , (arg:_) <- vars = "String(" ++ translateVariableName arg ++ ")"
302303 | LStrFloat <- op
@@ -359,7 +360,7 @@ translateExpression (SError msg) =
359360 "(function(){throw \'" ++ msg ++ "\';})()"
360361
361362translateExpression (SForeign _ _ "putStr" [(FString, var)]) =
362− "__IDRRT__print(" ++ translateVariableName var ++ ")"
363+ idrRTNamespace ++ "print(" ++ translateVariableName var ++ ")"
363364
364365translateExpression (SForeign _ _ fun args)
365366 | "[]=" `isSuffixOf` fun
@@ -415,8 +416,8 @@ translateExpression (SForeign _ _ fun args)
415416 '(' : intercalate "," (map generateWrapper as) ++ ")"
416417
417418 generateWrapper (ffunc, name)
418− | FFunction <- ffunc = "__IDRRT__ffiWrap(" ++ translateVariableName name ++ ")"
419− | FFunctionIO <- ffunc = "__IDRRT__ffiWrap(" ++ translateVariableName name ++ ")"
419+ | FFunction <- ffunc = idrRTNamespace ++ "ffiWrap(" ++ translateVariableName name ++ ")"
420+ | FFunctionIO <- ffunc = idrRTNamespace ++ "ffiWrap(" ++ translateVariableName name ++ ")"
420421
421422 generateWrapper (_, name) =
422423 translateVariableName name
@@ -436,7 +437,7 @@ translateExpression (SCase var cases) =
436437 ++ ")"
437438
438439translateExpression (SCon i name vars) =
439− concat [ "new __IDRRT__Con("
440+ concat [ "new " ++ idrRTNamespace ++ "Con("
440441 , show i
441442 , ",["
442443 , intercalate "," $ map translateVariableName vars
@@ -472,7 +473,7 @@ translateCase var (SConstCase ty e)
472473 matchHelper tyName = translateTypeMatch var tyName e
473474
474475translateCase var (SConstCase cst@(BI _) e) =
475− let cond = "__IDRRT__bigInt(" ++ var ++ ").equals(" ++ translateConstant cst ++ ")" in
476+ let cond = idrRTNamespace ++ "bigInt(" ++ var ++ ").equals(" ++ translateConstant cst ++ ")" in
476477 createIfBlock cond (translateExpression e)
477478
478479translateCase var (SConstCase cst e) =
@@ -480,7 +481,7 @@ translateCase var (SConstCase cst e) =
480481 createIfBlock cond (translateExpression e)
481482
482483translateCase var (SConCase a i name vars e) =
483− let isCon = var ++ " instanceof __IDRRT__Con"
484+ let isCon = var ++ " instanceof " ++ idrRTNamespace ++ "Con"
484485 isI = show i ++ " == " ++ var ++ ".i"
485486 params = intercalate "," $ map (("__var_" ++) . show) [a..(a+length vars)]
486487 args = ".apply(this," ++ var ++ ".vars)"
@@ -495,7 +496,7 @@ translateTypeMatch :: String -> String -> SExp -> String
495496translateTypeMatch var ty exp =
496497 let e = translateExpression exp in
497498 createIfBlock (var
498− ++ " instanceof __IDRRT__Type && "
499+ ++ " instanceof " ++ idrRTNamespace ++ "Type && "
499500 ++ var ++ ".type == '"++ ty ++"'") e
500501
501502
@@ -505,7 +506,7 @@ createIfBlock cond e =
505506 ++ ";\n}"
506507
507508createTailcall call =
508− "__IDRRT__tailcall(function(){return " ++ call ++ "})"
509+ idrRTNamespace ++ "tailcall(function(){return " ++ call ++ "})"
509510
510511translateFunctionCall name vars =
511512 concat (translateNamespace name)