on master help sign in
Factoring out $JSRTS.die for both node and javascript.
a854dd6Guillaume Yziquel
jsrts/Runtime-javascript.js+4−2
@@ -7,5 +7,7 @@ $JSRTS.prim_systemInfo = function (index) {
7 }
7 }
8 return "";
8 return "";
9};
9};
10−$JSRTS.prim_writeStr = function (x) { return console.log(x) }
10+$JSRTS.prim_writeStr = function (x) { return console.log(x) };
11−$JSRTS.prim_readStr = function () { return prompt('Prelude.getLine') };
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) {
9 }
9 }
10 return "";
10 return "";
11};
11};
12−$JSRTS.prim_writeStr = function (x) { return process.stdout.write(x) }
12+$JSRTS.prim_writeStr = function (x) { return process.stdout.write(x) };
13$JSRTS.prim_readStr = function () {
13$JSRTS.prim_readStr = function () {
14 var ret = '';
14 var ret = '';
15 var b = new Buffer(1024);
15 var b = new Buffer(1024);
@@ -28,4 +28,9 @@ $JSRTS.prim_readStr = function () {
28 }
28 }
29 }
29 }
30 return ret;
30 return ret;
31+};
32+
33+$JSRTS.die = function (message) {
34+ console.error(message);
35+ process.exit(-1);
31};
36};
src/IRTS/JavaScript/AST.hs+1−5
@@ -202,11 +202,7 @@ jsStmt2Text (JsSwitchCase exp l d) =
202 default2Text Nothing = ""
202 default2Text Nothing = ""
203 default2Text (Just z) =
203 default2Text (Just z) =
204 T.concat ["default:\n", indent $ T.concat [jsStmt2Text z, ";\nbreak;\n"]]
204 T.concat ["default:\n", indent $ T.concat [jsStmt2Text z, ";\nbreak;\n"]]
205−jsStmt2Text (JsError t) =
205+jsStmt2Text (JsError t) = T.concat ["$JSRTS.die(", jsAst2Text t, ");\n"]
206− T.concat
207− [ "console.error(", jsAst2Text t, ");\n"
208− , "process.exit(-1);"
209− ]
210jsStmt2Text (JsForever x) =
206jsStmt2Text (JsForever x) =
211 T.concat ["for(;;) {\n", indent $ jsStmt2Text x, "}\n"]
207 T.concat ["for(;;) {\n", indent $ jsStmt2Text x, "}\n"]
212jsStmt2Text JsContinue = "continue;"
208jsStmt2Text JsContinue = "continue;"