From ff7c089add621ff2dfb56ec0e3c96857f018bcbe Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders <293473+sandersn@users.noreply.github.com> Date: Thu, 14 Jun 2018 14:49:44 -0700 Subject: [PATCH] No dupe jsdoc for assignment inside an initializer --- src/parser/utilities.ts | 7 ++++++- tests/baselines/reference/noDuplicateJsdoc1.errors.txt | 9 +++++++++ tests/baselines/reference/noDuplicateJsdoc1.symbols | 5 +++++ tests/baselines/reference/noDuplicateJsdoc1.types | 9 +++++++++ tests/cases/conformance/jsdoc/noDuplicateJsdoc1.ts | 6 ++++++ 5 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 tests/baselines/reference/noDuplicateJsdoc1.errors.txt create mode 100644 tests/baselines/reference/noDuplicateJsdoc1.symbols create mode 100644 tests/baselines/reference/noDuplicateJsdoc1.types create mode 100644 tests/cases/conformance/jsdoc/noDuplicateJsdoc1.ts diff --git a/src/parser/utilities.ts b/src/parser/utilities.ts index 548705834ce5c..62dd9e978db94 100644 --- a/src/parser/utilities.ts +++ b/src/parser/utilities.ts @@ -2097,7 +2097,12 @@ namespace ts { if (isBinaryExpression(node) && node.operatorToken.kind === SyntaxKind.EqualsToken || isBinaryExpression(parent) && parent.operatorToken.kind === SyntaxKind.EqualsToken || node.kind === SyntaxKind.PropertyAccessExpression && node.parent && node.parent.kind === SyntaxKind.ExpressionStatement) { - getJSDocCommentsAndTagsWorker(parent); + if (isBinaryExpression(parent)) { + getJSDocCommentsAndTagsWorker(parent.parent); + } + else { + getJSDocCommentsAndTagsWorker(parent); + } } // Pull parameter comments from declaring function as well diff --git a/tests/baselines/reference/noDuplicateJsdoc1.errors.txt b/tests/baselines/reference/noDuplicateJsdoc1.errors.txt new file mode 100644 index 0000000000000..e24b3a2f7303a --- /dev/null +++ b/tests/baselines/reference/noDuplicateJsdoc1.errors.txt @@ -0,0 +1,9 @@ +tests/cases/conformance/jsdoc/a.js(2,11): error TS2304: Cannot find name 'b'. + + +==== tests/cases/conformance/jsdoc/a.js (1 errors) ==== + /** doc */ + const a = b = () => 0; + ~ +!!! error TS2304: Cannot find name 'b'. + \ No newline at end of file diff --git a/tests/baselines/reference/noDuplicateJsdoc1.symbols b/tests/baselines/reference/noDuplicateJsdoc1.symbols new file mode 100644 index 0000000000000..8e1f11f42e0a9 --- /dev/null +++ b/tests/baselines/reference/noDuplicateJsdoc1.symbols @@ -0,0 +1,5 @@ +=== tests/cases/conformance/jsdoc/a.js === +/** doc */ +const a = b = () => 0; +>a : Symbol(a, Decl(a.js, 1, 5)) + diff --git a/tests/baselines/reference/noDuplicateJsdoc1.types b/tests/baselines/reference/noDuplicateJsdoc1.types new file mode 100644 index 0000000000000..2ad9c78594852 --- /dev/null +++ b/tests/baselines/reference/noDuplicateJsdoc1.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/jsdoc/a.js === +/** doc */ +const a = b = () => 0; +>a : () => number +>b = () => 0 : () => number +>b : any +>() => 0 : () => number +>0 : 0 + diff --git a/tests/cases/conformance/jsdoc/noDuplicateJsdoc1.ts b/tests/cases/conformance/jsdoc/noDuplicateJsdoc1.ts new file mode 100644 index 0000000000000..bb1c9fe5f85bb --- /dev/null +++ b/tests/cases/conformance/jsdoc/noDuplicateJsdoc1.ts @@ -0,0 +1,6 @@ +// @allowJs: true +// @checkJs: true +// @noEmit: true +// @Filename: a.js +/** doc */ +const a = b = () => 0;