on master help sign in
Merge branch 'typed-laziness' of github.com:idris-lang/Idris-dev into typed-laziness
commitb1c239d4d0ebdc5ced5a9045b9e2e38acf7337da authorEdwin Brady <ecb10@st-andrews.ac.uk> dateThu 13 Feb 2014, 20:11 (13 years ago) parentec86b4723a20ef
1 file changed+10−3
src/IRTS/CodegenJavaScript.hs+10−3
src/IRTS/CodegenJavaScript.hs+10−3
@@ -129,6 +129,9 @@ compileJS (JSError exc) =
129129compileJS (JSBinOp op lhs rhs) =
130130 compileJS lhs ++ " " ++ op ++ " " ++ compileJS rhs
131131
132+compileJS (JSPreOp op val) =
133+ op ++ compileJS val
134+
132135compileJS (JSProj obj field)
133136 | JSFunction {} <- obj =
134137 concat ["(", compileJS obj, ").", field]
@@ -432,7 +435,8 @@ isJSConstantConstructor constants js
432435 all (isJSConstantConstructor constants) vals
433436 | JSNew "__IDRRT__Con" args <- js =
434437 all (isJSConstantConstructor constants) args
435− | JSIndex (JSProj (JSIdent _) "vars") (JSNum _) <- js =
438+ | JSIndex (JSProj (JSIdent name) "vars") (JSNum _) <- js
439+ , name `elem` constants =
436440 True
437441 | JSIdent name <- js
438442 , name `elem` constants =
@@ -1623,7 +1627,7 @@ translateExpression (SOp op vars)
16231627 | (LASHR _) <- op
16241628 , (lhs:rhs:_) <- vars = translateBinaryOp ">>" rhs lhs
16251629 | (LCompl _) <- op
1626− , (arg:_) <- vars = JSRaw $ '~' : translateVariableName arg
1630+ , (arg:_) <- vars = JSPreOp "~" (JSVar arg)
16271631
16281632 | LStrConcat <- op
16291633 , (lhs:rhs:_) <- vars = translateBinaryOp "+" lhs rhs
@@ -1692,7 +1696,10 @@ translateExpression (SOp op vars)
16921696 , (lhs:rhs:_) <- vars = JSIndex (JSVar lhs) (JSVar rhs)
16931697 | LStrTail <- op
16941698 , (arg:_) <- vars = let v = translateVariableName arg in
1695− JSRaw $ v ++ ".substr(1," ++ v ++ ".length-1)"
1699+ JSApp (JSProj (JSIdent v) "substr") [
1700+ JSNum (JSInt 1),
1701+ JSBinOp "-" (JSProj (JSIdent v) "length") (JSNum (JSInt 1))
1702+ ]
16961703 | LNullPtr <- op
16971704 , (_) <- vars = JSNull
16981705