Skip to content

Commit

Permalink
repl: refactor repl.js
Browse files Browse the repository at this point in the history
There is some unnecessary logic in repl.js. Remove it.

PR-URL: #6071
Reviewed-By: James M Snell <jasnell@gmail.com>
  • Loading branch information
Trott committed Apr 8, 2016
1 parent e67fee0 commit c5afd98
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 4 deletions.
8 changes: 4 additions & 4 deletions lib/repl.js
Original file line number Diff line number Diff line change
Expand Up @@ -398,7 +398,6 @@ function REPLServer(prompt,
self.on('line', function(cmd) {
debug('line %j', cmd);
sawSIGINT = false;
var skipCatchall = false;

// leading whitespaces in template literals should not be trimmed.
if (self._inTemplateLiteral) {
Expand All @@ -417,11 +416,12 @@ function REPLServer(prompt,
return;
} else if (!self.bufferedCommand) {
self.outputStream.write('Invalid REPL keyword\n');
skipCatchall = true;
finish(null);
return;
}
}

if (!skipCatchall && (cmd || (!cmd && self.bufferedCommand))) {
if (cmd || self.bufferedCommand) {
var evalCmd = self.bufferedCommand + cmd;
if (/^\s*\{/.test(evalCmd) && /\}\s*$/.test(evalCmd)) {
// It's confusing for `{ a : 1 }` to be interpreted as a block
Expand Down Expand Up @@ -1022,7 +1022,7 @@ REPLServer.prototype.memory = function memory(cmd) {
// self.lines.level.length === 0
// TODO? keep a log of level so that any syntax breaking lines can
// be cleared on .break and in the case of a syntax error?
// TODO? if a log was kept, then I could clear the bufferedComand and
// TODO? if a log was kept, then I could clear the bufferedCommand and
// eval these lines and throw the syntax error
} else {
self.lines.level = [];
Expand Down
17 changes: 17 additions & 0 deletions test/parallel/test-repl-null.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
'use strict';
require('../common');
const repl = require('repl');
const assert = require('assert');

var replserver = new repl.REPLServer();

replserver._inTemplateLiteral = true;

// `null` gets treated like an empty string. (Should it? You have to do some
// strange business to get it into the REPL. Maybe it should really throw?)

assert.doesNotThrow(() => {
replserver.emit('line', null);
});

replserver.emit('line', '.exit');

0 comments on commit c5afd98

Please sign in to comment.