FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

readline: fix the REPL on editor mode crashing during tab completion by cola119 · Pull Request #43543 · nodejs/node · GitHub

/ node Public

readline: fix the REPL on editor mode crashing during tab completion - #43543

Merged
nodejs-github-bot merged 1 commit into
nodejs:mainfrom
cola119:issue-43528
Jun 28, 2022
Merged

readline: fix the REPL on editor mode crashing during tab completion#43543
nodejs-github-bot merged 1 commit into
nodejs:mainfrom
cola119:issue-43528

Conversation

cola119 commented Jun 23, 2022
edited
Loading

Copy link
Copy Markdown
Member

Fixes #43528. This PR fixes the REPL on editor mode crashing during tab completion.

The root cause of this issue is that commonPrefix could receive an empty array of completions because of #41632.

On editor mode, the completions are converted into the common prefix string in REPLServer.prototype.completeOnEditorModeL1603 (I'm not sure why this wrapper is needed). And then [kTabCompleter]() is called as a callback with the completion as its argument.

node/lib/repl.js

Lines 1596 to 1607 in 6f924ac

REPLServer.prototype.completeOnEditorMode = (callback) => (err, results) => {
if (err) return callback(err);
const { 0: completions, 1: completeOn = '' } = results;
let result = ArrayPrototypeFilter(completions, Boolean);
if (completeOn && result.length !== 0) {
result = [commonPrefix(result)];
}
callback(null, [result, completeOn]);
};

For example, the completions for a are ['async', 'await', 'Array', ...] (note that #41632 made REPL case-incentive) and their common prefix string is '' (the return value of commonPrefix(['async', 'await', 'Array', ...])).
This means the completions is [''] when [kTabCompleter]() is called, and commonPrefix([]) will be called at L670.

[kTabCompleter](lastKeypressWasTab, { 0: completions, 1: completeOn }) {
// Result and the text that was completed.
if (!completions || completions.length === 0) {
return;
}
// If there is a common prefix to all matches, then apply that portion.
const prefix = commonPrefix(
ArrayPrototypeFilter(completions, (e) => e !== '')
);

nodejs-github-bot added needs-ci PRs that need a full CI run. readline Issues and PRs related to the built-in readline module. labels Jun 23, 2022
aduh95 added author ready PRs that have at least one approval, no outstanding review comments, and a CI started. request-ci Add this label to start a Jenkins CI on a PR. labels Jun 27, 2022
github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jun 27, 2022

Copy link
Copy Markdown
Collaborator

ZYSzys added commit-queue Add this label to land a pull request using GitHub Actions. and removed needs-ci PRs that need a full CI run. labels Jun 28, 2022
nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Jun 28, 2022
nodejs-github-bot merged commit 593de05 into nodejs:main Jun 28, 2022

Copy link
Copy Markdown
Collaborator

Landed in 593de05

targos pushed a commit that referenced this pull request Jul 12, 2022
PR-URL: #43543
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
targos pushed a commit that referenced this pull request Jul 20, 2022
PR-URL: #43543
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
targos pushed a commit that referenced this pull request Jul 31, 2022
PR-URL: #43543
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
guangwong pushed a commit to noslate-project/node that referenced this pull request Oct 10, 2022
PR-URL: nodejs/node#43543
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Yongsheng Zhang <zyszys98@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs that have at least one approval, no outstanding review comments, and a CI started. readline Issues and PRs related to the built-in readline module.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

REPL in editor mode crashes during tab completion

6 participants


Back | FazBrowse Home | New Git URL