From 6d3e15f0ee229df96f2fb9131d958c25023d2a6e Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 13 Jun 2017 10:32:25 -0700 Subject: [PATCH 1/2] Add JSDoc to EOF token to catch missed @typedefs --- src/compiler/parser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 75186eca2c1..572f813baed 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -685,7 +685,7 @@ namespace ts { sourceFile.statements = parseList(ParsingContext.SourceElements, parseStatement); Debug.assert(token() === SyntaxKind.EndOfFileToken); - sourceFile.endOfFileToken = parseTokenNode(); + sourceFile.endOfFileToken = addJSDocComment(parseTokenNode() as EndOfFileToken); setExternalModuleIndicator(sourceFile); From b967bbb72247346c395d90f1a4e98af4ea35042c Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Tue, 13 Jun 2017 10:37:04 -0700 Subject: [PATCH 2/2] Test @typedef in @typedef-only JS files Previously there was nothing for the @typedef to attach to, so the comment was never parsed. Now these comments attach to the EOF token. --- .../reference/jsdocTypeDefAtStartOfFile.symbols | 12 ++++++++++++ .../reference/jsdocTypeDefAtStartOfFile.types | 12 ++++++++++++ .../conformance/jsdoc/jsdocTypeDefAtStartOfFile.ts | 11 +++++++++++ 3 files changed, 35 insertions(+) create mode 100644 tests/baselines/reference/jsdocTypeDefAtStartOfFile.symbols create mode 100644 tests/baselines/reference/jsdocTypeDefAtStartOfFile.types create mode 100644 tests/cases/conformance/jsdoc/jsdocTypeDefAtStartOfFile.ts diff --git a/tests/baselines/reference/jsdocTypeDefAtStartOfFile.symbols b/tests/baselines/reference/jsdocTypeDefAtStartOfFile.symbols new file mode 100644 index 00000000000..6aaeda1b4b5 --- /dev/null +++ b/tests/baselines/reference/jsdocTypeDefAtStartOfFile.symbols @@ -0,0 +1,12 @@ +=== tests/cases/conformance/jsdoc/dtsEquivalent.js === +/** @typedef {{[k: string]: any}} AnyEffect */ +No type information for this code./** @typedef {number} Third */ +No type information for this code.=== tests/cases/conformance/jsdoc/index.js === +/** @type {AnyEffect} */ +let b; +>b : Symbol(b, Decl(index.js, 1, 3)) + +/** @type {Third} */ +let c; +>c : Symbol(c, Decl(index.js, 3, 3)) + diff --git a/tests/baselines/reference/jsdocTypeDefAtStartOfFile.types b/tests/baselines/reference/jsdocTypeDefAtStartOfFile.types new file mode 100644 index 00000000000..46248a441a1 --- /dev/null +++ b/tests/baselines/reference/jsdocTypeDefAtStartOfFile.types @@ -0,0 +1,12 @@ +=== tests/cases/conformance/jsdoc/dtsEquivalent.js === +/** @typedef {{[k: string]: any}} AnyEffect */ +No type information for this code./** @typedef {number} Third */ +No type information for this code.=== tests/cases/conformance/jsdoc/index.js === +/** @type {AnyEffect} */ +let b; +>b : { [k: string]: any; } + +/** @type {Third} */ +let c; +>c : number + diff --git a/tests/cases/conformance/jsdoc/jsdocTypeDefAtStartOfFile.ts b/tests/cases/conformance/jsdoc/jsdocTypeDefAtStartOfFile.ts new file mode 100644 index 00000000000..b3097fd47ad --- /dev/null +++ b/tests/cases/conformance/jsdoc/jsdocTypeDefAtStartOfFile.ts @@ -0,0 +1,11 @@ +// @allowJs: true +// @checkJs: true +// @noEmit: true +// @Filename: dtsEquivalent.js +/** @typedef {{[k: string]: any}} AnyEffect */ +/** @typedef {number} Third */ +// @Filename: index.js +/** @type {AnyEffect} */ +let b; +/** @type {Third} */ +let c;