Skip to content

Refactors trigger debug failure when JSX text has a ' and a tag on the same line. #50068

@DanielRosenwasser

Description

@DanielRosenwasser
function MyComponent() {
    const myDivs = [
        /*a*/
        <div>
            We're so happy to meet <em>you</em>!
        </div>
        /*b*/
    ];
}

Trigger a refactoring like "Extract to constant" between /*a*/ and /*b*/.

It should work but instead

Error: Debug Failure. False expression: Token end is child end
    at processChildNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148905:38)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148841:21
    at visitNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:30881:24)
    at Object.forEachChild (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:31396:24)
    at processNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148840:20)
    at processChildNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148912:21)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148841:21
    at visitNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:30881:24)
    at Object.forEachChild (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:31387:24)
    at processNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148840:20)
    at processChildNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148912:21)
    at processChildNodes (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148967:48)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148843:21
    at visitNodes (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:30886:24)
    at Object.forEachChild (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:31388:21)
    at processNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148840:20)
    at processChildNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148912:21)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148841:21
    at visitNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:30881:24)
    at Object.forEachChild (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:31256:24)
    at processNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148840:20)
    at processChildNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148912:21)
    at processChildNodes (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148967:48)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148843:21
    at visitNodes (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:30886:24)
    at Object.forEachChild (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:31216:24)
    at processNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148840:20)
    at formatSpanWorker (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148639:17)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148602:140
    at Object.getFormattingScanner (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:147229:23)
    at Object.formatNodeGivenIndentation (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:148602:31)
    at getFormattedTextOfNode (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:151052:45)
    at format (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:151023:52)
    at computeNewText (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:151026:23)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:150990:39
    at Object.mapDefined (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:622:30)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:150988:42
    at Object.mapDefined (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:622:30)
    at Object.getTextChangesFromChanges (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:150974:27)
    at ChangeTracker.getChanges (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:150913:45)
    at Function.ChangeTracker.with (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:150333:32)
    at Object.getRefactorEditsToRemoveFunctionBraces [as getEditsForAction] (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:164297:62)
    at Object.getEditsForRefactor (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:151641:41)
    at Object.getEditsForRefactor (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:167577:32)
    at IpcIOSession.Session.getEditsForRefactor (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:179269:59)
    at Session.handlers.ts.Map.ts.getEntries._a.<computed> (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:177740:61)
    at c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:179652:96
    at IpcIOSession.Session.executeWithRequestId (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:179643:28)
    at IpcIOSession.Session.executeCommand (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:179652:41)
    at IpcIOSession.Session.onMessage (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:179680:35)
    at process.<anonymous> (c:/Users/Daniel/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.8.20220723/node_modules/typescript/lib/tsserver.js:183846:31)
    at process.emit (node:events:390:28)
    at emit (node:internal/child_process:917:12)
    at processTicksAndRejections (node:internal/process/task_queues:84:21)

Note that none of the following examples exhibit this behavior:

function MyComponent() {
    const myDivs = [
        /*a*/
        <div>
            We are so happy to meet <em>you</em>!
        </div>
        /*b*/
    ];
}
function MyComponent() {
    const myDivs = [
        /*a*/
        <div>
            We're so happy to meet you!
        </div>
        /*b*/
    ];
}

Metadata

Metadata

Assignees

Labels

BugA bug in TypeScriptDomain: LS: Refactoringse.g. extract to constant or function, rename symbolEffort: ModerateRequires experience with the TypeScript codebase, but feasible. Harder than "Effort: Casual".Fix AvailableA PR has been opened for this issueHelp WantedYou can do thisOld-Crawler-DetectedDetected by an older crawler (aka "fuzzer") running random TSServer operations on public code.

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions