Skip to content

Commit c766159

Browse files
meixgbengl
authored andcommitted
repl: #41690 REPL gives wrong autocomplete on literals
Fixes: #41690 PR-URL: #41883 Reviewed-By: Rich Trott <[email protected]> Reviewed-By: Mestery <[email protected]>
1 parent 0de611f commit c766159

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

lib/repl.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1168,7 +1168,7 @@ const importRE = /\bimport\s*\(\s*['"`](([\w@./:-]+\/)?(?:[\w@./:-]*))(?![^'"`])
11681168
const requireRE = /\brequire\s*\(\s*['"`](([\w@./:-]+\/)?(?:[\w@./:-]*))(?![^'"`])$/;
11691169
const fsAutoCompleteRE = /fs(?:\.promises)?\.\s*[a-z][a-zA-Z]+\(\s*["'](.*)/;
11701170
const simpleExpressionRE =
1171-
/(?:[a-zA-Z_$](?:\w|\$)*\??\.)*[a-zA-Z_$](?:\w|\$)*\??\.?$/;
1171+
/(?:[\w$'"`[{(](?:\w|\$|['"`\]})])*\??\.)*[a-zA-Z_$](?:\w|\$)*\??\.?$/;
11721172
const versionedFileNamesRe = /-\d+\.\d+/;
11731173

11741174
function isIdentifier(str) {

test/parallel/test-repl-tab-complete.js

+20
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,26 @@ testMe.complete('obj.', common.mustCall(function(error, data) {
558558
putIn.run(['.clear']);
559559
testMe.complete('Buffer.prototype.', common.mustCall());
560560

561+
// Make sure repl gives correct autocomplete on literals
562+
testMe.complete('``.a', common.mustCall((err, data) => {
563+
assert.strictEqual(data[0].includes('``.at'), true);
564+
}));
565+
testMe.complete('\'\'.a', common.mustCall((err, data) => {
566+
assert.strictEqual(data[0].includes('\'\'.at'), true);
567+
}));
568+
testMe.complete('"".a', common.mustCall((err, data) => {
569+
assert.strictEqual(data[0].includes('"".at'), true);
570+
}));
571+
testMe.complete('("").a', common.mustCall((err, data) => {
572+
assert.strictEqual(data[0].includes('("").at'), true);
573+
}));
574+
testMe.complete('[].a', common.mustCall((err, data) => {
575+
assert.strictEqual(data[0].includes('[].at'), true);
576+
}));
577+
testMe.complete('{}.a', common.mustCall((err, data) => {
578+
assert.deepStrictEqual(data[0], []);
579+
}));
580+
561581
const testNonGlobal = repl.start({
562582
input: putIn,
563583
output: putIn,

0 commit comments

Comments
 (0)