From 6d8a5f6288fe47e3e874d156017388829121876c Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 17 Jul 2018 13:35:55 -0700 Subject: [PATCH] Fix invalid cast: JSDocSignature is not a SignatureDeclaration (#25734) --- src/compiler/parser.ts | 6 +++--- .../fourslash/updateSourceFile_jsdocSignature.ts | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) create mode 100644 tests/cases/fourslash/updateSourceFile_jsdocSignature.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 1e4a793e566..942a56bcc30 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -494,9 +494,9 @@ namespace ts { case SyntaxKind.JSDocSignature: return visitNodes(cbNode, cbNodes, node.decorators) || visitNodes(cbNode, cbNodes, node.modifiers) || - visitNodes(cbNode, cbNodes, (node).typeParameters) || - visitNodes(cbNode, cbNodes, (node).parameters) || - visitNode(cbNode, (node).type); + forEach((node).typeParameters, cbNode) || + forEach((node).parameters, cbNode) || + visitNode(cbNode, (node).type); case SyntaxKind.JSDocTypeLiteral: if ((node as JSDocTypeLiteral).jsDocPropertyTags) { for (const tag of (node as JSDocTypeLiteral).jsDocPropertyTags!) { diff --git a/tests/cases/fourslash/updateSourceFile_jsdocSignature.ts b/tests/cases/fourslash/updateSourceFile_jsdocSignature.ts new file mode 100644 index 00000000000..13261acde0d --- /dev/null +++ b/tests/cases/fourslash/updateSourceFile_jsdocSignature.ts @@ -0,0 +1,12 @@ +/// + +/////** +//// * @callback Cb +//// * @return {/**/} +//// */ +////let x; + +// Previously this crashed due to an invalid cast in `forEachChild` for `JSDocSignature`. + +goTo.marker(""); +edit.insert("number");