diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index f866b86fca2..16726e35433 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -3976,7 +3976,7 @@ namespace ts { shorthandDeclaration.equalsToken = equalsToken; shorthandDeclaration.objectAssignmentInitializer = allowInAnd(parseAssignmentExpressionOrHigher); } - return finishNode(shorthandDeclaration); + return addJSDocComment(finishNode(shorthandDeclaration)); } else { const propertyAssignment = createNode(SyntaxKind.PropertyAssignment, fullStart); @@ -3985,7 +3985,7 @@ namespace ts { propertyAssignment.questionToken = questionToken; parseExpected(SyntaxKind.ColonToken); propertyAssignment.initializer = allowInAnd(parseAssignmentExpressionOrHigher); - return finishNode(propertyAssignment); + return addJSDocComment(finishNode(propertyAssignment)); } } diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 02b8385d0ff..8f66e43c1d6 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -1212,13 +1212,19 @@ namespace ts { } // Also recognize when the node is the RHS of an assignment expression + const parent = node.parent; const isSourceOfAssignmentExpressionStatement = - node.parent && node.parent.parent && - node.parent.kind === SyntaxKind.BinaryExpression && - (node.parent as BinaryExpression).operatorToken.kind === SyntaxKind.EqualsToken && - node.parent.parent.kind === SyntaxKind.ExpressionStatement; + parent && parent.parent && + parent.kind === SyntaxKind.BinaryExpression && + (parent as BinaryExpression).operatorToken.kind === SyntaxKind.EqualsToken && + parent.parent.kind === SyntaxKind.ExpressionStatement; if (isSourceOfAssignmentExpressionStatement) { - return node.parent.parent.jsDocComment; + return parent.parent.jsDocComment; + } + + const isPropertyAssignmentExpression = parent && parent.kind === SyntaxKind.PropertyAssignment; + if (isPropertyAssignmentExpression) { + return parent.jsDocComment; } } diff --git a/tests/cases/fourslash/jsDocFunctionSignatures3.ts b/tests/cases/fourslash/jsDocFunctionSignatures3.ts new file mode 100644 index 00000000000..3679035d31d --- /dev/null +++ b/tests/cases/fourslash/jsDocFunctionSignatures3.ts @@ -0,0 +1,32 @@ +/// + +// @allowNonTsExtensions: true +// @Filename: Foo.js + +//// var someObject = { +//// /** +//// * @param {string} param1 Some string param. +//// * @param {number} parm2 Some number param. +//// */ +//// someMethod: function(param1, param2) { +//// console.log(param1/*1*/); +//// return false; +//// }, +//// /** +//// * @param {number} p1 Some number param. +//// */ +//// otherMethod(p1) { +//// p1/*2*/ +//// } +//// +//// }; + +goTo.marker('1'); +edit.insert('.'); +verify.memberListContains('substr', undefined, undefined, 'method'); +edit.backspace(); + +goTo.marker('2'); +edit.insert('.'); +verify.memberListContains('toFixed', undefined, undefined, 'method'); +edit.backspace();