fix(51245): Class with parameter decorator in arrow function causes "convert to default export" refactoring failure (#51256)

* fix(51245): don't rely on parent nodes in formatting rules

* check existing parent node
This commit is contained in:
Oleksandr T
2022-10-26 16:59:44 -04:00
committed by GitHub
parent 16faf45682
commit d4f26c840b
3 changed files with 25 additions and 2 deletions
+2 -2
View File
@@ -732,10 +732,10 @@ namespace ts.formatting {
}
function nodeIsInDecoratorContext(node: Node): boolean {
while (isExpressionNode(node)) {
while (node && isExpression(node)) {
node = node.parent;
}
return node.kind === SyntaxKind.Decorator;
return node && node.kind === SyntaxKind.Decorator;
}
function isStartOfVariableDeclarationList(context: FormattingContext): boolean {
@@ -0,0 +1,23 @@
/// <reference path='fourslash.ts' />
// @Filename: /a.ts
/////*a*/export const f = () => {
//// return class C {
//// constructor(@Foo() param: any) { }
//// }
////}/*b*/
////function Foo(...args: any[]): any {}
goTo.select("a", "b");
edit.applyRefactor({
refactorName: "Convert export",
actionName: "Convert named export to default export",
actionDescription: "Convert named export to default export",
newContent:
`export default () => {
return class C {
constructor(@Foo() param: any) { }
}
}
function Foo(...args: any[]): any {}`,
});