diff --git a/lib/repl.js b/lib/repl.js index 1291ad2d072f97..e11d91d8c16fbc 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -627,7 +627,7 @@ ArrayStream.prototype.write = function() {}; const requireRE = /\brequire\s*\(['"](([\w\.\/-]+\/)?([\w\.\/-]*))/; const simpleExpressionRE = - /(([a-zA-Z_$](?:\w|\$)*)\.)*([a-zA-Z_$](?:\w|\$)*)\.?$/; + /^\s*(([a-zA-Z_$](?:\w|\$)*)\.)*([a-zA-Z_$](?:\w|\$)*)\.?$/; function intFilter(item) { // filters out anything not starting with A-Z, a-z, $ or _ diff --git a/test/parallel/test-repl-tab-complete.js b/test/parallel/test-repl-tab-complete.js index b1aa6d61f4f462..27179472d00d00 100644 --- a/test/parallel/test-repl-tab-complete.js +++ b/test/parallel/test-repl-tab-complete.js @@ -251,3 +251,11 @@ testMe.complete('obj.', common.mustCall(function(error, data) { assert.strictEqual(data[0].indexOf('obj.1a'), -1); assert.notStrictEqual(data[0].indexOf('obj.a'), -1); })); + +// Don't try to complete results of non-simple expressions +putIn.run(['.clear']); +putIn.run(['function a() {}']); + +testMe.complete('a().b.', common.mustCall((error, data) => { + assert.deepEqual(data, [[], undefined]); +}));