///
////interface T1 {}
////class T2 {}
////type T3 = "a" | "b";
////
////declare function foo(strings: TemplateStringsArray, ...values: T[]): void;
////
/////*1*/foo``;
/////*2*/foo``;
/////*3*/foo<{ a: number }>``;
/////*4*/foo``;
/////*5*/foo``;
/////*6*/foo``;
/////*7*/foo``;
verify.quickInfoAt("1", "function foo(strings: TemplateStringsArray, ...values: number[]): void");
verify.quickInfoAt("2", "function foo(strings: TemplateStringsArray, ...values: (string | number)[]): void");
verify.quickInfoAt("3",
`function foo<{
a: number;
}>(strings: TemplateStringsArray, ...values: {
a: number;
}[]): void`);
verify.quickInfoAt("4", "function foo(strings: TemplateStringsArray, ...values: T1[]): void");
verify.quickInfoAt("5", "function foo(strings: TemplateStringsArray, ...values: T2[]): void");
verify.quickInfoAt("6", "function foo(strings: TemplateStringsArray, ...values: T3[]): void");
verify.quickInfoAt("7", "function foo(strings: TemplateStringsArray, ...values: unknown[]): void");