diff --git a/lib/repl.js b/lib/repl.js index e61a5edb519aeb..81afd27a4dbd00 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -288,8 +288,9 @@ function REPLServer(prompt, for (var i = 0; i < line.length; i += 1) { if (previous === '\\') { - // if it is a valid escaping, then skip processing - previous = current; + // if it is a valid escaping, then skip processing and the previous + // character doesn't matter anymore. + previous = null; continue; } diff --git a/test/parallel/test-repl.js b/test/parallel/test-repl.js index ac890cf75844db..e121cb7889ab2a 100644 --- a/test/parallel/test-repl.js +++ b/test/parallel/test-repl.js @@ -242,6 +242,13 @@ function error_test() { 'RegExp.$6\nRegExp.$7\nRegExp.$8\nRegExp.$9\n', expect: ['\'1\'\n', '\'2\'\n', '\'3\'\n', '\'4\'\n', '\'5\'\n', '\'6\'\n', '\'7\'\n', '\'8\'\n', '\'9\'\n'].join(`${prompt_unix}`) }, + // regression tests for https://github.com/nodejs/node/issues/2749 + { client: client_unix, send: 'function x() {\nreturn \'\\n\';\n }', + expect: prompt_multiline + prompt_multiline + + 'undefined\n' + prompt_unix }, + { client: client_unix, send: 'function x() {\nreturn \'\\\\\';\n }', + expect: prompt_multiline + prompt_multiline + + 'undefined\n' + prompt_unix }, ]); }