on master help sign in
javascript: temporary workaround to fix some issues with chars
10b971craichoo
src/IRTS/CodegenJavaScript.hs+8
@@ -64,6 +64,7 @@ data JS = JSRaw String
64 | JSArray [JS]
64 | JSArray [JS]
65 | JSObject [(String, JS)]
65 | JSObject [(String, JS)]
66 | JSString String
66 | JSString String
67+ | JSChar String
67 | JSNum JSNum
68 | JSNum JSNum
68 | JSAssign JS JS
69 | JSAssign JS JS
69 | JSAlloc String (Maybe JS)
70 | JSAlloc String (Maybe JS)
@@ -153,6 +154,9 @@ compileJS (JSObject fields) =
153compileJS (JSString str) =
154compileJS (JSString str) =
154 show str
155 show str
155
156
157+compileJS (JSChar chr) =
158+ chr
159+
156compileJS (JSNum num)
160compileJS (JSNum num)
157 | JSInt i <- num = show i
161 | JSInt i <- num = show i
158 | JSFloat f <- num = show f
162 | JSFloat f <- num = show f
@@ -241,6 +245,7 @@ jsLet name value body =
241 )
245 )
242 ) [value]
246 ) [value]
243
247
248+
244jsSubst :: String -> JS -> JS -> JS
249jsSubst :: String -> JS -> JS -> JS
245jsSubst var new (JSVar old)
250jsSubst var new (JSVar old)
246 | var == translateVariableName old = new
251 | var == translateVariableName old = new
@@ -757,6 +762,9 @@ translateSpecialName name
757translateConstant :: Const -> JS
762translateConstant :: Const -> JS
758translateConstant (I i) = JSNum (JSInt i)
763translateConstant (I i) = JSNum (JSInt i)
759translateConstant (Fl f) = JSNum (JSFloat f)
764translateConstant (Fl f) = JSNum (JSFloat f)
765+translateConstant (Ch '\DEL') = JSChar "'\\u007F'"
766+translateConstant (Ch '\a') = JSChar "'\\u0007'"
767+translateConstant (Ch '\SO') = JSChar "'\\u000E'"
760translateConstant (Ch c) = JSString [c]
768translateConstant (Ch c) = JSString [c]
761translateConstant (Str s) = JSString s
769translateConstant (Str s) = JSString s
762translateConstant (AType (ATInt ITNative)) = JSType JSIntTy
770translateConstant (AType (ATInt ITNative)) = JSType JSIntTy