Permalink
Browse files

[repl] fix syntax error handling for 'throw ...', fix return value as…

…sertion
  • Loading branch information...
1 parent 67cc5c9 commit 9fe3f506c5d88bf182288d41b3f983404958e7ea @indutny committed Sep 11, 2011
Showing with 11 additions and 7 deletions.
  1. +11 −7 lib/repl.js
View
@@ -163,9 +163,9 @@ function REPLServer(prompt, stream, eval) {
self.context,
'repl',
function(e, ret) {
- if (e) return finish(e);
+ if (e && !isSyntaxError(e)) return finish(e);
- if (ret === 'function' || e) {
+ if (typeof ret === 'function' || e) {
// Now as statement without parens.
self.eval(self.bufferedCommand, self.context, 'repl', finish);
} else {
@@ -177,22 +177,26 @@ function REPLServer(prompt, stream, eval) {
finish(null);
}
- function finish(e, ret) {
+ function isSyntaxError(e) {
// Convert error to string
e = e && (e.stack || e.toString());
+ return e && e.match(/^SyntaxError/) &&
+ !(e.match(/^SyntaxError: Unexpected token .*\n/) &&
+ e.match(/\n at Object.parse \(native\)\n/));
+ }
+
+ function finish(e, ret) {
// If error was SyntaxError and not JSON.parse error
- if (e && e.match(/^SyntaxError/) &&
- !(e.match(/^SyntaxError: Unexpected token .*\n/) &&
- e.match(/\n at Object.parse \(native\)\n/))) {
+ if (isSyntaxError(e)) {
// Start buffering data like that:
// {
// ... x: 1
// ... }
self.displayPrompt();
return;
} else if (e) {
- self.outputStream.write(e + '\n');
+ self.outputStream.write((e.stack || e) + '\n');
}
// Clear buffer if no SyntaxErrors

0 comments on commit 9fe3f50

Please sign in to comment.