Skip to content

Class with parameter decorator in arrow function causes "convert to default export" refactoring failure #51245

@DanielRosenwasser

Description

@DanielRosenwasser
[|export|] const f = () => {
    return class InnerClass {
        constructor(@Inject() param: any) { }
    }
};

function Inject(...args: any[]): any {}

Request Convert named export to default export

Stack Trace
Response received: getEditsForRefactor (8292). Request took 185 ms. Success: false . Message: Error processing request. Cannot read properties of undefined (reading 'kind')
TypeError: Cannot read properties of undefined (reading 'kind')
    at Object.isExpressionNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:16361:22)
    at nodeIsInDecoratorContext ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:149858:23)
    at isEndOfDecoratorContextOnSameLine ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:149854:17)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150046:109
    at Object.every ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:309:22)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150046:67
    at processPair ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150911:29)
    at processRange ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150900:29)
    at consumeTokenAndAdvanceScanner ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150819:38)
    at processChildNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150724:29)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150659:21
    at visitNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31214:24)
    at forEachChildInPropertyDeclaration ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31301:17)
    at Object.forEachChild ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31997:47)
    at processNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150658:20)
    at processChildNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150730:21)
    at processChildNodes ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150785:48)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150661:21
    at visitNodes ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31219:24)
    at forEachChildInClassDeclarationOrExpression ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31940:13)
    at Object.forEachChild ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31997:47)
    at processNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150658:20)
    at processChildNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150730:21)
    at processChildNodes ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150785:48)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150661:21
    at visitNodes ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31219:24)
    at forEachChildInBlock ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31930:16)
    at Object.forEachChild ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31997:47)
    at processNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150658:20)
    at processChildNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150730:21)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150659:21
    at visitNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31214:24)
    at forEachChildInArrowFunction ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31424:17)
    at Object.forEachChild ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31997:47)
    at processNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150658:20)
    at processChildNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150730:21)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150659:21
    at visitNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31214:24)
    at forEachChildInExportAssignment ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31749:17)
    at Object.forEachChild ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:31997:47)
    at processNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150658:20)
    at formatSpanWorker ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150437:17)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150399:140
    at Object.getFormattingScanner ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:149019:23)
    at Object.formatNodeGivenIndentation ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:150399:31)
    at getFormattedTextOfNode ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152872:45)
    at format ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152843:52)
    at computeNewText ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152846:23)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152810:39
    at Object.mapDefined ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:621:30)
    at [USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152808:42
    at Object.mapDefined ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:621:30)
    at Object.getTextChangesFromChanges ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152794:27)
    at ChangeTracker.getChanges ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152733:45)
    at ChangeTracker.with ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:152153:32)
    at Object.getRefactorEditsToConvertBetweenNamedAndDefaultExports [as getEditsForAction] ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:162781:62)
    at Object.getEditsForRefactor ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:153461:41)
    at Object.getEditsForRefactor ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:169759:32)
    at Session.getEditsForRefactor ([USER_DIR]/.vscode-insiders/extensions/ms-vscode.vscode-typescript-next-4.9.20221014/node_modules/typescript/lib/tsserver.js:181467:59)

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugA bug in TypeScriptDomain: LS: Refactoringse.g. extract to constant or function, rename symbolEffort: CasualGood issue if you're already used to contributing to the codebase. Harder than "good first issue".Help 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

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions