on master help sign in
Factoring out $JSRTS.die for both node and javascript.
commita854dd6ef267d559d997d867458d5c22db0d1b1c authorGuillaume Yziquel <guillaume.hj.yziquel@gmail.com> dateMon 17 Dec 2018, 12:08 (8 years ago) parent467aa46
3 files changed+11−8
jsrts/Runtime-javascript.js+4−2 jsrts/Runtime-node.js+6−1 src/IRTS/JavaScript/AST.hs+1−5
jsrts/Runtime-javascript.js+4−2
@@ -7,5 +7,7 @@ $JSRTS.prim_systemInfo = function (index) {
77 }
88 return "";
99};
10−$JSRTS.prim_writeStr = function (x) { return console.log(x) }
11−$JSRTS.prim_readStr = function () { return prompt('Prelude.getLine') };
10+$JSRTS.prim_writeStr = function (x) { return console.log(x) };
11+$JSRTS.prim_readStr = function () { return prompt('Prelude.getLine') };
12+
13+$JSRTS.die = function (message) { throw new Error(message) };
jsrts/Runtime-node.js+6−1
@@ -9,7 +9,7 @@ $JSRTS.prim_systemInfo = function (index) {
99 }
1010 return "";
1111};
12−$JSRTS.prim_writeStr = function (x) { return process.stdout.write(x) }
12+$JSRTS.prim_writeStr = function (x) { return process.stdout.write(x) };
1313$JSRTS.prim_readStr = function () {
1414 var ret = '';
1515 var b = new Buffer(1024);
@@ -28,4 +28,9 @@ $JSRTS.prim_readStr = function () {
2828 }
2929 }
3030 return ret;
31+};
32+
33+$JSRTS.die = function (message) {
34+ console.error(message);
35+ process.exit(-1);
3136};
src/IRTS/JavaScript/AST.hs+1−5
@@ -202,11 +202,7 @@ jsStmt2Text (JsSwitchCase exp l d) =
202202 default2Text Nothing = ""
203203 default2Text (Just z) =
204204 T.concat ["default:\n", indent $ T.concat [jsStmt2Text z, ";\nbreak;\n"]]
205−jsStmt2Text (JsError t) =
206− T.concat
207− [ "console.error(", jsAst2Text t, ");\n"
208− , "process.exit(-1);"
209− ]
205+jsStmt2Text (JsError t) = T.concat ["$JSRTS.die(", jsAst2Text t, ");\n"]
210206jsStmt2Text (JsForever x) =
211207 T.concat ["for(;;) {\n", indent $ jsStmt2Text x, "}\n"]
212208jsStmt2Text JsContinue = "continue;"