Merge pull request #6870 from RyanCavanaugh/fix6825

Recognize object literal method JSDoc comments
This commit is contained in:
Ryan Cavanaugh
2016-02-04 10:17:43 -08:00
3 changed files with 45 additions and 7 deletions

View File

@@ -3976,7 +3976,7 @@ namespace ts {
shorthandDeclaration.equalsToken = equalsToken;
shorthandDeclaration.objectAssignmentInitializer = allowInAnd(parseAssignmentExpressionOrHigher);
}
return finishNode(shorthandDeclaration);
return addJSDocComment(finishNode(shorthandDeclaration));
}
else {
const propertyAssignment = <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));
}
}

View File

@@ -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;
}
}

View File

@@ -0,0 +1,32 @@
///<reference path="fourslash.ts" />
// @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();