From 872ebb68e2b776bc45ba51f07da98897f4eb99af Mon Sep 17 00:00:00 2001 From: Andy Hanson Date: Tue, 9 Jan 2018 10:48:32 -0800 Subject: [PATCH] Clear jsDocCache for reused nodes --- src/compiler/parser.ts | 5 +++++ tests/cases/fourslash/editClearsJsDocCache.ts | 14 ++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 tests/cases/fourslash/editClearsJsDocCache.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 6503e6bf4211d..bae9f0594ed19 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1679,6 +1679,11 @@ namespace ts { return undefined; } + if ((node as JSDocContainer).jsDocCache) { + // jsDocCache may include tags from parent nodes, which might have been modified. + (node as JSDocContainer).jsDocCache = undefined; + } + return node; } diff --git a/tests/cases/fourslash/editClearsJsDocCache.ts b/tests/cases/fourslash/editClearsJsDocCache.ts new file mode 100644 index 0000000000000..0ffc351300f98 --- /dev/null +++ b/tests/cases/fourslash/editClearsJsDocCache.ts @@ -0,0 +1,14 @@ +/// + +// @allowJs: true + +// @Filename: /a.js +/////** @type {/*type*/number} */ +////let /*x*/x; + +verify.quickInfoAt("x", "let x: number"); + +goTo.marker("type"); +edit.replace(test.markers()[0].position, "number".length, "string"); + +verify.quickInfoAt("x", "let x: string");