diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates1.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates1.ts
index 457551f160a..78b4b586a0c 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates1.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates1.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(4);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("templateStrings");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates2.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates2.ts
index fa29c21ff21..c4b75657be5 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates2.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates2.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(4);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("templateStrings");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates3.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates3.ts
index 5670cadfd4e..2616a0797be 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates3.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates3.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(4);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("x");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates4.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates4.ts
index bbbd869de09..995eddf3f65 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates4.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates4.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(4);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("y");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates5.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates5.ts
index 68a95121240..01bd606cbf5 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates5.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates5.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(4);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("z");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates6.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates6.ts
index c1080b3f7e5..96909c8aeac 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates6.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates6.ts
@@ -7,8 +7,11 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
- verify.currentSignatureParamterCountIs(4);
+ verify.signatureHelpArgumentCountIs(4);
+
+ //verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('g(templateStrings: any, x: any, y: any, z: any): string');
verify.currentParameterHelpArgumentNameIs("templateStrings");
verify.currentParameterSpanIs("templateStrings: any");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplates7.ts b/tests/cases/fourslash/signatureHelpTaggedTemplates7.ts
index eb25ac6f647..ddb120b4089 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplates7.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplates7.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(1);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("templateStrings");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete1.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete1.ts
index 65a250fce31..edc6b932e5f 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete1.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete1.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(2);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("templateStrings");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete2.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete2.ts
index c2baa7b187d..51ca619c4be 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete2.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete2.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(2);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("x");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete3.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete3.ts
index ccaebc1f1b6..05aaef5bc50 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete3.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete3.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(2);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("templateStrings");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete4.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete4.ts
index e220ec60679..e615f0156c0 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete4.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete4.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(3);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("y");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete5.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete5.ts
index 1655841575d..531ce46b3c8 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete5.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete5.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(3);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("templateStrings");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete6.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete6.ts
index 67d81d6558e..fcfd569daff 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete6.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesIncomplete6.ts
@@ -7,7 +7,10 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+ verify.signatureHelpArgumentCountIs(3);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
verify.currentParameterHelpArgumentNameIs("y");
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesNested1.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesNested1.ts
index 934bea21ed5..a20e43b20bc 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesNested1.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesNested1.ts
@@ -7,7 +7,9 @@
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('g(templateStrings: any, x: any, y: any, z: any): string');
});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesNested2.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesNested2.ts
index 9ff5103f30a..488209dfac7 100644
--- a/tests/cases/fourslash/signatureHelpTaggedTemplatesNested2.ts
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesNested2.ts
@@ -8,7 +8,9 @@ debugger;
test.markers().forEach(m => {
goTo.position(m.position);
+
verify.signatureHelpCountIs(1);
+
verify.currentSignatureParamterCountIs(4);
verify.currentSignatureHelpIs('f(templateStrings: any, x: any, y: any, z: any): number');
});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags1.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags1.ts
new file mode 100644
index 00000000000..608af7dbb96
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags1.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `/*1*/ /*2*/$/*3*/{
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(2);
+
+ verify.currentSignatureParamterCountIs(2);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o1: string): number');
+ verify.currentParameterHelpArgumentNameIs("templateStrings");
+ verify.currentParameterSpanIs("templateStrings: string[]");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags2.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags2.ts
new file mode 100644
index 00000000000..c7908bdb52a
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags2.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${/*1*/ /*2*/ /*3*/
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(2);
+
+ verify.currentSignatureParamterCountIs(2);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o1: string): number');
+ verify.currentParameterHelpArgumentNameIs("p1_o1");
+ verify.currentParameterSpanIs("p1_o1: string");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags3.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags3.ts
new file mode 100644
index 00000000000..22256db1f0e
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags3.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${/*1*/ "s/*2*/tring" /*3*/ } ${
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(3);
+
+ verify.currentSignatureParamterCountIs(4);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean');
+ verify.currentParameterHelpArgumentNameIs("p1_o3");
+ verify.currentParameterSpanIs("p1_o3: string");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags4.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags4.ts
new file mode 100644
index 00000000000..700cc2194bf
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags4.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${/*1*/ 123.456/*2*/ /*3*/ } ${
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(3);
+
+ verify.currentSignatureParamterCountIs(4);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string');
+ verify.currentParameterHelpArgumentNameIs("p1_o2");
+ verify.currentParameterSpanIs("p1_o2: number");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags5.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags5.ts
new file mode 100644
index 00000000000..20701c0e98d
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags5.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${ } ${/*1*/ /*2*/ /*3*/
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(3);
+
+ verify.currentSignatureParamterCountIs(4);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string');
+ verify.currentParameterHelpArgumentNameIs("p2_o2");
+ verify.currentParameterSpanIs("p2_o2: number");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags6.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags6.ts
new file mode 100644
index 00000000000..7bfd17c254a
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags6.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${ } ${/*1*/ /*2*/ /*3*/}
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(3);
+
+ verify.currentSignatureParamterCountIs(4);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string');
+ verify.currentParameterHelpArgumentNameIs("p2_o2");
+ verify.currentParameterSpanIs("p2_o2: number");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags7.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags7.ts
new file mode 100644
index 00000000000..4f747d3d8eb
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags7.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${ } ${/*1*/ fa/*2*/lse /*3*/}
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(3);
+
+ verify.currentSignatureParamterCountIs(4);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean');
+ verify.currentParameterHelpArgumentNameIs("p2_o3");
+ verify.currentParameterSpanIs("p2_o3: boolean");
+});
\ No newline at end of file
diff --git a/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags8.ts b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags8.ts
new file mode 100644
index 00000000000..f97c2569730
--- /dev/null
+++ b/tests/cases/fourslash/signatureHelpTaggedTemplatesWithOverloadedTags8.ts
@@ -0,0 +1,20 @@
+///
+
+//// function f(templateStrings: string[], p1_o1: string): number;
+//// function f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string;
+//// function f(templateStrings: string[], p1_o3: string, p2_o3: boolean, p3_o3: number): boolean;
+//// function f(...foo[]: any) { return ""; }
+////
+//// f `${ undefined } ${ undefined } ${/*1*/ 10/*2*/./*3*/01 /*4*/} `
+
+test.markers().forEach(m => {
+ goTo.position(m.position);
+
+ verify.signatureHelpCountIs(3);
+ verify.signatureHelpArgumentCountIs(4);
+
+ verify.currentSignatureParamterCountIs(4);
+ verify.currentSignatureHelpIs('f(templateStrings: string[], p1_o2: number, p2_o2: number, p3_o2: number): string');
+ verify.currentParameterHelpArgumentNameIs("p3_o2");
+ verify.currentParameterSpanIs("p3_o2: number");
+});
\ No newline at end of file