From c9c9f859f3f9118e707ff3cef6a2a02e2d599890 Mon Sep 17 00:00:00 2001 From: xiaofa Date: Thu, 17 Jan 2019 05:51:57 +0800 Subject: [PATCH] fix quick fix infer parameter types from usage in js file --- src/services/textChanges.ts | 4 +++- .../fourslash/codeFixInferFromUsageArrowJS.ts | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/codeFixInferFromUsageArrowJS.ts diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index 4689e18508c..7dab7205841 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -340,7 +340,9 @@ namespace ts.textChanges { } public insertJsdocCommentBefore(sourceFile: SourceFile, node: HasJSDoc, tag: JSDoc): void { - const fnStart = node.getStart(sourceFile); + const fnStart = node.kind === SyntaxKind.ArrowFunction + ? node.parent.parent.getStart(sourceFile) + : node.getStart(sourceFile); if (node.jsDoc) { for (const jsdoc of node.jsDoc) { this.deleteRange(sourceFile, { diff --git a/tests/cases/fourslash/codeFixInferFromUsageArrowJS.ts b/tests/cases/fourslash/codeFixInferFromUsageArrowJS.ts new file mode 100644 index 00000000000..e867ae99c75 --- /dev/null +++ b/tests/cases/fourslash/codeFixInferFromUsageArrowJS.ts @@ -0,0 +1,18 @@ +/// +// @allowJs: true +// @checkJs: true +// @noEmit: true +// @noImplicitAny: true +// @Filename: test.js + +////const foo = x => x.y + 1; + +verify.codeFix({ + description: "Infer parameter types from usage", + index: 0, + newFileContent: +`/** + * @param {{ y: number; }} x + */ +const foo = x => x.y + 1;`, +}); \ No newline at end of file