When constructing signature, include parameter symbol instead of property symbol of parameter-property declaration

Fixes #4566
This commit is contained in:
Sheetal Nandi 2015-11-16 16:48:57 -08:00
parent 09a313a417
commit a275dabe44
2 changed files with 25 additions and 1 deletions

View File

@ -3829,7 +3829,13 @@ namespace ts {
let minArgumentCount = -1;
for (let i = 0, n = declaration.parameters.length; i < n; i++) {
const param = declaration.parameters[i];
parameters.push(param.symbol);
let paramSymbol = param.symbol;
// Include parameter symbol instead of property symbol in the signature
if (paramSymbol && !!(paramSymbol.flags & SymbolFlags.Property) && !isBindingPattern(param.name)) {
const resolvedSymbol = resolveName(param, paramSymbol.name, SymbolFlags.Value, undefined, undefined);
paramSymbol = resolvedSymbol;
}
parameters.push(paramSymbol);
if (param.type && param.type.kind === SyntaxKind.StringLiteral) {
hasStringLiterals = true;
}

View File

@ -0,0 +1,18 @@
/// <reference path='fourslash.ts' />
////class Circle {
//// /**
//// * Initialize a circle.
//// * @param radius The radius of the circle.
//// */
//// constructor(private radius: number) {
//// }
////}
////var a = new Circle(/**/
goTo.marker('');
verify.signatureHelpCountIs(1);
verify.currentSignatureHelpIs("Circle(radius: number): Circle");
verify.currentParameterHelpArgumentNameIs("radius");
verify.currentParameterSpanIs("radius: number");
verify.currentParameterHelpArgumentDocCommentIs("The radius of the circle.");