From e9cb12aeab1241a520164221999d0916500df9f3 Mon Sep 17 00:00:00 2001 From: Paul van Brenk Date: Fri, 6 Mar 2015 14:29:23 -0800 Subject: [PATCH 1/2] Add diagnostics for signaturehelp crash --- src/services/signatureHelp.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 8b7dea13ea..e5ddb9012c 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -264,12 +264,16 @@ module ts.SignatureHelp { // the comma. That amounts to taking the ceiling of half the index. var argumentIndex = (listItemInfo.listItemIndex + 1) >> 1; + var argumentCount = getCommaBasedArgCount(list); + + Debug.assert(argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + return { kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments, invocation: callExpression, argumentsSpan: getApplicableSpanForArguments(list), argumentIndex: argumentIndex, - argumentCount: getCommaBasedArgCount(list) + argumentCount: argumentCount }; } } @@ -347,6 +351,8 @@ module ts.SignatureHelp { ? 1 : (tagExpression.template).templateSpans.length + 1; + Debug.assert(argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + return { kind: ArgumentListKind.TaggedTemplateArguments, invocation: tagExpression, @@ -512,6 +518,8 @@ module ts.SignatureHelp { selectedItemIndex = selectBestInvalidOverloadIndex(candidates, argumentCount); } + Debug.assert(argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + return { items, applicableSpan, From 80f9cf299c250b46205ba2770dd7175e6a7f01f1 Mon Sep 17 00:00:00 2001 From: Paul van Brenk Date: Fri, 6 Mar 2015 15:09:19 -0800 Subject: [PATCH 2/2] fix check to allow for empty argument list --- src/services/signatureHelp.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/signatureHelp.ts b/src/services/signatureHelp.ts index 7686bb470e..6f4f38aa73 100644 --- a/src/services/signatureHelp.ts +++ b/src/services/signatureHelp.ts @@ -266,7 +266,7 @@ module ts.SignatureHelp { var argumentCount = getCommaBasedArgCount(list); - Debug.assert(argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); return { kind: isTypeArgList ? ArgumentListKind.TypeArguments : ArgumentListKind.CallArguments, @@ -351,7 +351,7 @@ module ts.SignatureHelp { ? 1 : (tagExpression.template).templateSpans.length + 1; - Debug.assert(argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); return { kind: ArgumentListKind.TaggedTemplateArguments, @@ -518,7 +518,7 @@ module ts.SignatureHelp { selectedItemIndex = selectBestInvalidOverloadIndex(candidates, argumentCount); } - Debug.assert(argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); + Debug.assert(argumentIndex === 0 || argumentIndex < argumentCount, `argumentCount < argumentIndex, ${argumentCount} < ${argumentIndex}`); return { items,