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");