Enabling more test cases

This commit is contained in:
Sheetal Nandi
2014-10-07 11:30:27 -07:00
parent e9681c1877
commit 430f361353
120 changed files with 1204 additions and 1350 deletions

View File

@@ -3,7 +3,7 @@
////module A {
//// /*var*/
////}
////module A/*check*/ {
////module /*check*/A {
//// var p;
////}

View File

@@ -2,16 +2,16 @@
////var a = { name: 'bob', age: 18 };
////var b = { name: 'jim', age: 20 };
////var c/*1*/ = [a, b];
////var /*1*/c = [a, b];
////var a1 = { name: 'bob', age: 18 };
////var b1 = { name: 'jim', age: 20, dob: new Date() };
////var c1/*2*/ = [a1, b1];
////var /*2*/c1 = [a1, b1];
////var a2 = { name: 'bob', age: 18, address: 'springfield' };
////var b2 = { name: 'jim', age: 20, dob: new Date() };
////var c2/*3*/ = [a2, b2];
////var c2a/*4*/ = [a2, b2, a1];
////var /*3*/c2 = [a2, b2];
////var /*4*/c2a = [a2, b2, a1];
////interface I {
//// name: string;
@@ -19,19 +19,19 @@
////}
////var i: I;
////var c3/*5*/ = [a2, b2, i];
////var /*5*/c3 = [a2, b2, i];
goTo.marker('1');
verify.quickInfoIs('{ name: string; age: number; }[]');
verify.quickInfoIs('(var) c: {\n name: string;\n age: number;\n}[]');
goTo.marker('2');
verify.quickInfoIs('{ name: string; age: number; }[]');
verify.quickInfoIs('(var) c1: {\n name: string;\n age: number;\n}[]');
goTo.marker('3');
verify.quickInfoIs('{}[]');
verify.quickInfoIs('(var) c2: {}[]');
goTo.marker('4');
verify.quickInfoIs('{ name: string; age: number; }[]');
verify.quickInfoIs('(var) c2a: {\n name: string;\n age: number;\n}[]');
goTo.marker('5');
verify.quickInfoIs('I[]');
verify.quickInfoIs('(var) c3: I[]');

View File

@@ -8,8 +8,8 @@
////module C {
//// export function f(x: typeof C) {
//// x./*1*/
//// var r/*3*/ = new /*2*/x<number>();
//// var r2/*5*/ = r./*4*/
//// var /*3*/r = new /*2*/x<number>();
//// var /*5*/r2 = r./*4*/
//// return typeof r;
//// }
////}
@@ -27,13 +27,13 @@ goTo.marker('2');
verify.completionListContains('x');
goTo.marker('3');
verify.quickInfoIs('C<number>');
verify.quickInfoIs('(local var) r: C<number>');
goTo.marker('4');
verify.completionListContains('x');
edit.insert('x;');
goTo.marker('5');
verify.quickInfoIs('number');
verify.quickInfoIs('(local var) r2: number');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -5,7 +5,7 @@
//// foo() { }
//// }
//// export module C {
//// export var C/**/ = M.C
//// export var /**/C = M.C
//// }
////}
@@ -13,5 +13,5 @@
edit.insert('');
goTo.marker();
verify.quickInfoIs('typeof C');
verify.quickInfoIs('(var) M.C.C: typeof M.C');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -261,15 +261,8 @@ function sharedNegativeVerify()
verify.not.completionListContains('mod2eexvar');
}
function goToMarkAndVerifyShadow(marker: string)
function goToMarkAndVerifyShadow()
{
goTo.marker(marker);
verify.completionListContains('shwvar', 'string');
verify.completionListContains('shwfn', '(shadow: any): void');
verify.completionListContains('shwcls', 'shwcls');
verify.completionListContains('shwint', 'shwint');
sharedNegativeVerify();
verify.not.completionListContains('mod2var');
verify.not.completionListContains('mod2fn');
@@ -284,20 +277,30 @@ function goToMarkAndVerifyShadow(marker: string)
}
// from a shadow module with no export
goToMarkAndVerifyShadow('shadowModuleWithNoExport');
goTo.marker('shadowModuleWithNoExport');
verify.completionListContains('shwvar', '(var) shwvar: string');
verify.completionListContains('shwfn', '(function) shwfn(shadow: any): void');
verify.completionListContains('shwcls', 'class shwcls');
verify.completionListContains('shwint', 'interface shwint');
goToMarkAndVerifyShadow();
// from a shadow module with export
goToMarkAndVerifyShadow('shadowModuleWithExport');
goTo.marker('shadowModuleWithExport');
verify.completionListContains('shwvar', '(var) mod4.shwvar: string');
verify.completionListContains('shwfn', '(function) mod4.shwfn(shadow: any): void');
verify.completionListContains('shwcls', 'class mod4.shwcls');
verify.completionListContains('shwint', 'interface mod4.shwint');
goToMarkAndVerifyShadow();
// from a modlue with import
goTo.marker('moduleWithImport');
verify.completionListContains('mod1', 'mod1');
verify.completionListContains('mod2', 'mod2');
verify.completionListContains('mod3', 'mod3');
verify.completionListContains('shwvar', 'number');
verify.completionListContains('shwfn', '(): void');
verify.completionListContains('shwcls', 'shwcls');
verify.completionListContains('shwint', 'shwint');
verify.completionListContains('mod1', 'module mod1');
verify.completionListContains('mod2', 'module mod2');
verify.completionListContains('mod3', 'module mod3');
verify.completionListContains('shwvar', '(var) shwvar: number');
verify.completionListContains('shwfn', '(function) shwfn(): void');
verify.completionListContains('shwcls', 'class shwcls');
verify.completionListContains('shwint', 'interface shwint');
sharedNegativeVerify();

View File

@@ -229,23 +229,23 @@ function goToMarkAndGeneralVerify(marker: string)
{
goTo.marker(marker);
verify.completionListContains('mod1var', 'number');
verify.completionListContains('mod1fn', '(): void');
verify.completionListContains('mod1cls', 'mod1cls');
verify.completionListContains('mod1int', 'mod1int');
verify.completionListContains('mod1mod', 'mod1mod');
verify.completionListContains('mod1evar', 'number');
verify.completionListContains('mod1efn', '(): void');
verify.completionListContains('mod1ecls', 'mod1ecls');
verify.completionListContains('mod1eint', 'mod1eint');
verify.completionListContains('mod1emod', 'mod1emod');
verify.completionListContains('mod1eexvar', 'number');
verify.completionListContains('mod2', 'mod2');
verify.completionListContains('mod3', 'mod3');
verify.completionListContains('shwvar', 'number');
verify.completionListContains('shwfn', '(): void');
verify.completionListContains('shwcls', 'shwcls');
verify.completionListContains('shwint', 'shwint');
verify.completionListContains('mod1var', '(var) mod1var: number');
verify.completionListContains('mod1fn', '(function) mod1fn(): void');
verify.completionListContains('mod1cls', 'class mod1cls');
verify.completionListContains('mod1int', 'interface mod1int');
verify.completionListContains('mod1mod', 'module mod1mod');
verify.completionListContains('mod1evar', '(var) mod1.mod1evar: number');
verify.completionListContains('mod1efn', '(function) mod1.mod1efn(): void');
verify.completionListContains('mod1ecls', 'class mod1.mod1ecls');
verify.completionListContains('mod1eint', 'interface mod1.mod1eint');
verify.completionListContains('mod1emod', 'module mod1.mod1emod');
verify.completionListContains('mod1eexvar', '(var) mod1.mod1eexvar: number');
verify.completionListContains('mod2', 'module mod2');
verify.completionListContains('mod3', 'module mod3');
verify.completionListContains('shwvar', '(var) shwvar: number');
verify.completionListContains('shwfn', '(function) shwfn(): void');
verify.completionListContains('shwcls', 'class shwcls');
verify.completionListContains('shwint', 'interface shwint');
verify.not.completionListContains('mod2var');
verify.not.completionListContains('mod2fn');
@@ -276,8 +276,8 @@ goToMarkAndGeneralVerify('mod1');
// from function in mod1
goToMarkAndGeneralVerify('function');
verify.completionListContains('bar', 'number');
verify.completionListContains('foob', '(): void');
verify.completionListContains('bar', '(local var) bar: number');
verify.completionListContains('foob', '(local function) foob(): void');
// from class in mod1
goToMarkAndGeneralVerify('class');
@@ -289,21 +289,21 @@ goToMarkAndGeneralVerify('interface');
// from module in mod1
goToMarkAndGeneralVerify('module');
verify.completionListContains('m1X', 'number');
verify.completionListContains('m1Func', '(): void');
verify.completionListContains('m1Class', 'm1Class');
verify.completionListContains('m1Int', 'm1Int');
verify.completionListContains('m1Mod', 'm1Mod');
verify.completionListContains('m1eX', 'number');
verify.completionListContains('m1eFunc', '(): void');
verify.completionListContains('m1eClass', 'm1eClass');
verify.completionListContains('m1eInt', 'm1eInt');
verify.completionListContains('m1eMod', 'm1eMod');
verify.completionListContains('m1X', '(var) m1X: number');
verify.completionListContains('m1Func', '(function) m1Func(): void');
verify.completionListContains('m1Class', 'class m1Class');
verify.completionListContains('m1Int', 'interface m1Int');
verify.completionListContains('m1Mod', 'module m1Mod');
verify.completionListContains('m1eX', '(var) mod1mod.m1eX: number');
verify.completionListContains('m1eFunc', '(function) mod1mod.m1eFunc(): void');
verify.completionListContains('m1eClass', 'class mod1mod.m1eClass');
verify.completionListContains('m1eInt', 'interface mod1mod.m1eInt');
verify.completionListContains('m1eMod', 'module mod1mod.m1eMod');
// from exported function in mod1
goToMarkAndGeneralVerify('exportedFunction');
verify.completionListContains('bar', 'number');
verify.completionListContains('foob', '(): void');
verify.completionListContains('bar', '(local var) bar: number');
verify.completionListContains('foob', '(local function) foob(): void');
// from exported class in mod1
goToMarkAndGeneralVerify('exportedClass');
@@ -315,31 +315,31 @@ goToMarkAndGeneralVerify('exportedInterface');
// from exported module in mod1
goToMarkAndGeneralVerify('exportedModule');
verify.completionListContains('mX', 'number');
verify.completionListContains('mFunc', '(): void');
verify.completionListContains('mClass', 'mClass');
verify.completionListContains('mInt', 'mInt');
verify.completionListContains('mMod', 'mMod');
verify.completionListContains('meX', 'number');
verify.completionListContains('meFunc', '(): void');
verify.completionListContains('meClass', 'meClass');
verify.completionListContains('meInt', 'meInt');
verify.completionListContains('meMod', 'meMod');
verify.completionListContains('mX', '(var) mX: number');
verify.completionListContains('mFunc', '(function) mFunc(): void');
verify.completionListContains('mClass', 'class mClass');
verify.completionListContains('mInt', 'interface mInt');
verify.completionListContains('mMod', 'module mMod');
verify.completionListContains('meX', '(var) mod1.mod1emod.meX: number');
verify.completionListContains('meFunc', '(function) mod1.mod1emod.meFunc(): void');
verify.completionListContains('meClass', 'class mod1.mod1emod.meClass');
verify.completionListContains('meInt', 'interface mod1.mod1emod.meInt');
verify.completionListContains('meMod', 'module mod1.mod1emod.meMod');
// from extended module
goTo.marker('extendedModule');
verify.completionListContains('mod1evar', 'number');
verify.completionListContains('mod1efn', '(): void');
verify.completionListContains('mod1ecls', 'mod1ecls');
verify.completionListContains('mod1eint', 'mod1eint');
verify.completionListContains('mod1emod', 'mod1emod');
verify.completionListContains('mod1eexvar', 'number');
verify.completionListContains('mod2', 'mod2');
verify.completionListContains('mod3', 'mod3');
verify.completionListContains('shwvar', 'number');
verify.completionListContains('shwfn', '(): void');
verify.completionListContains('shwcls', 'shwcls');
verify.completionListContains('shwint', 'shwint');
verify.completionListContains('mod1evar', '(var) mod1.mod1evar: number');
verify.completionListContains('mod1efn', '(function) mod1.mod1efn(): void');
verify.completionListContains('mod1ecls', 'class mod1.mod1ecls');
verify.completionListContains('mod1eint', 'interface mod1.mod1eint');
verify.completionListContains('mod1emod', 'module mod1.mod1emod');
verify.completionListContains('mod1eexvar', '(var) mod1.mod1eexvar: number');
verify.completionListContains('mod2', 'module mod2');
verify.completionListContains('mod3', 'module mod3');
verify.completionListContains('shwvar', '(var) shwvar: number');
verify.completionListContains('shwfn', '(function) shwfn(): void');
verify.completionListContains('shwcls', 'class shwcls');
verify.completionListContains('shwint', 'interface shwint');
verify.not.completionListContains('mod2var');
verify.not.completionListContains('mod2fn');

View File

@@ -260,13 +260,13 @@ function goToMarkAndGeneralVerify(marker: string)
// from global scope
goToMarkAndGeneralVerify('global');
verify.completionListContains('mod1', 'mod1');
verify.completionListContains('mod2', 'mod2');
verify.completionListContains('mod3', 'mod3');
verify.completionListContains('shwvar', 'number');
verify.completionListContains('shwfn', '(): void');
verify.completionListContains('shwcls', 'shwcls');
verify.completionListContains('shwint', 'shwint');
verify.completionListContains('mod1', 'module mod1');
verify.completionListContains('mod2', 'module mod2');
verify.completionListContains('mod3', 'module mod3');
verify.completionListContains('shwvar', '(var) shwvar: number');
verify.completionListContains('shwfn', '(function) shwfn(): void');
verify.completionListContains('shwcls', 'class shwcls');
verify.completionListContains('shwint', 'interface shwint');
verifyNotContainFunctionMembers();
verifyNotContainClassMembers();
@@ -274,8 +274,8 @@ verifyNotContainInterfaceMembers();
// from function scope
goToMarkAndGeneralVerify('function');
verify.completionListContains('sfvar', 'number');
verify.completionListContains('sffn', '(): void');
verify.completionListContains('sfvar', '(local var) sfvar: number');
verify.completionListContains('sffn', '(local function) sffn(): void');
verifyNotContainClassMembers();
verifyNotContainInterfaceMembers();

View File

@@ -238,10 +238,10 @@ function goToMarkerAndVerify(marker: string)
verify.completionListContains('mod1');
verify.completionListContains('mod2');
verify.completionListContains('mod3');
verify.completionListContains('shwvar', 'number');
verify.completionListContains('shwfn', '(): void');
verify.completionListContains('shwcls', 'shwcls');
verify.completionListContains('shwint', 'shwint');
verify.completionListContains('shwvar', '(var) shwvar: number');
verify.completionListContains('shwfn', '(function) shwfn(): void');
verify.completionListContains('shwcls', 'class shwcls');
verify.completionListContains('shwint', 'interface shwint');
verify.not.completionListContains('mod2var');
verify.not.completionListContains('mod2fn');
@@ -272,4 +272,4 @@ goToMarkerAndVerify('extendedClass');
goToMarkerAndVerify('objectLiteral');
goTo.marker('localVar');
verify.completionListContains('shwvar', 'string');
verify.completionListContains('shwvar', '(local var) shwvar: string');

View File

@@ -198,222 +198,222 @@
edit.insert('');
goTo.marker('1');
verify.quickInfoIs("(i: number, s: string) => number");
verify.quickInfoIs("(property) C1T5.foo: (i: number, s: string) => number");
goTo.marker('2');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) i: number");
goTo.marker('3');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) i: number");
goTo.marker('4');
verify.quickInfoIs("(i: number, s: string) => number");
verify.quickInfoIs("(var) C2T5.foo: (i: number, s: string) => number");
goTo.marker('5');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) i: number");
goTo.marker('6');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) i: number");
goTo.marker('7');
verify.quickInfoIs("(s: string) => string");
verify.quickInfoIs("(var) c3t1: (s: string) => string");
goTo.marker('8');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('9');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('10');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(var) c3t2: IFoo");
goTo.marker('11');
verify.quickInfoIs("number[]");
verify.quickInfoIs("(var) c3t3: number[]");
goTo.marker('12');
verify.quickInfoIs("() => IFoo");
verify.quickInfoIs("(var) c3t4: () => IFoo");
goTo.marker('13');
verify.quickInfoIs("(n: number) => IFoo");
verify.quickInfoIs("(var) c3t5: (n: number) => IFoo");
goTo.marker('14');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('15');
verify.quickInfoIs("(n: number, s: string) => IFoo");
verify.quickInfoIs("(var) c3t6: (n: number, s: string) => IFoo");
goTo.marker('16');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('17');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('18');
verify.quickInfoIs("(n: number): number (+ 1 overload(s))");
verify.quickInfoIs("(var) c3t7: {\n (n: number): number;\n (s1: string): number;\n}");
goTo.marker('20');
verify.quickInfoIs("(n: number, s: string) => number");
verify.quickInfoIs("(var) c3t8: (n: number, s: string) => number");
goTo.marker('21');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('22');
verify.quickInfoIs("number[][]");
verify.quickInfoIs("(var) c3t9: number[][]");
goTo.marker('23');
verify.quickInfoIs("IFoo[]");
verify.quickInfoIs("(var) c3t10: IFoo[]");
goTo.marker('24');
verify.quickInfoIs("{ (n: number, s: string): string; }[]");
verify.quickInfoIs("(var) c3t11: {\n (n: number, s: string): string;\n}[]");
goTo.marker('25');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('26');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('27');
verify.quickInfoIs("IBar");
verify.quickInfoIs("(var) c3t12: IBar");
goTo.marker('28');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(property) foo: IFoo");
goTo.marker('29');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(var) c3t13: IFoo");
goTo.marker('30');
verify.quickInfoIs("(i: any, s: any) => any");
verify.quickInfoIs("(property) f: (i: any, s: any) => any");
goTo.marker('31');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) i: any");
goTo.marker('32');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('33');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(var) c3t14: IFoo");
goTo.marker('34');
verify.quickInfoIs("any[]");
verify.quickInfoIs("(property) a: undefined[]");
goTo.marker('35');
verify.quickInfoIs("(i: number, s: string) => string");
verify.quickInfoIs("(property) C4T5.foo: (i: number, s: string) => string");
goTo.marker('36');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) i: number");
goTo.marker('37');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('38');
verify.quickInfoIs("(i: number, s: string) => string");
verify.quickInfoIs("(var) C5T5.foo: (i: number, s: string) => string");
goTo.marker('39');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) i: number");
goTo.marker('40');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('41');
verify.quickInfoIs("(n: number) => IFoo");
verify.quickInfoIs("(var) c6t5: (n: number) => IFoo");
goTo.marker('42');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('43');
verify.quickInfoIs("IFoo[]");
verify.quickInfoIs("(var) c7t2: IFoo[]");
goTo.marker('44');
verify.quickInfoIs("IFoo[]");
verify.quickInfoIs("(var) c7t2: IFoo[]");
goTo.marker('45');
verify.quickInfoIs("(s: string) => string");
verify.quickInfoIs("(property) t1: (s: string) => string");
goTo.marker('46');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('47');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(property) t2: IFoo");
goTo.marker('48');
verify.quickInfoIs("number[]");
verify.quickInfoIs("(property) t3: number[]");
goTo.marker('49');
verify.quickInfoIs("() => IFoo");
verify.quickInfoIs("(property) t4: () => IFoo");
goTo.marker('50');
verify.quickInfoIs("(n: number) => IFoo");
verify.quickInfoIs("(property) t5: (n: number) => IFoo");
goTo.marker('51');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('52');
verify.quickInfoIs("(n: number, s: string) => IFoo");
verify.quickInfoIs("(property) t6: (n: number, s: string) => IFoo");
goTo.marker('53');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('54');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('55');
verify.quickInfoIs("(n: number, s: string) => number");
verify.quickInfoIs("(property) t7: (n: number, s: string) => number");
goTo.marker('56');
verify.quickInfoIs("(n: number, s: string) => number");
verify.quickInfoIs("(property) t8: (n: number, s: string) => number");
goTo.marker('57');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('58');
verify.quickInfoIs("number[][]");
verify.quickInfoIs("(property) t9: number[][]");
goTo.marker('59');
verify.quickInfoIs("IFoo[]");
verify.quickInfoIs("(property) t10: IFoo[]");
goTo.marker('60');
verify.quickInfoIs("{ (n: number, s: string): string; }[]");
verify.quickInfoIs("(property) t11: {\n (n: number, s: string): string;\n}[]");
goTo.marker('61');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('62');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('63');
verify.quickInfoIs("IBar");
verify.quickInfoIs("(property) t12: IBar");
goTo.marker('64');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(property) foo: IFoo");
goTo.marker('65');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(property) t13: IFoo");
goTo.marker('66');
verify.quickInfoIs("(i: any, s: any) => any");
verify.quickInfoIs("(property) f: (i: any, s: any) => any");
goTo.marker('67');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) i: any");
goTo.marker('68');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('69');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(property) t14: IFoo");
goTo.marker('70');
verify.quickInfoIs("any[]");
verify.quickInfoIs("(property) a: undefined[]");
goTo.marker('71');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('72');
verify.quickInfoIs("() => (n: number) => IFoo");
verify.quickInfoIs("(var) c10t5: () => (n: number) => IFoo");
goTo.marker('73');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('74');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('75');
verify.quickInfoIs("(s: string) => string");
verify.quickInfoIs("(var) c12t1: (s: string) => string");
goTo.marker('76');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('77');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(var) c12t2: IFoo");
goTo.marker('78');
verify.quickInfoIs("number[]");
verify.quickInfoIs("(var) c12t3: number[]");
goTo.marker('79');
verify.quickInfoIs("() => IFoo");
verify.quickInfoIs("(var) c12t4: () => IFoo");
goTo.marker('80');
verify.quickInfoIs("(n: number) => IFoo");
verify.quickInfoIs("(var) c12t5: (n: number) => IFoo");
goTo.marker('81');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('82');
verify.quickInfoIs("(n: number, s: string) => IFoo");
verify.quickInfoIs("(var) c12t6: (n: number, s: string) => IFoo");
goTo.marker('83');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('84');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('85');
verify.quickInfoIs("(n: number, s: string) => number");
verify.quickInfoIs("(var) c12t7: (n: number, s: string) => number");
goTo.marker('86');
verify.quickInfoIs("(n: number, s: string) => number");
verify.quickInfoIs("(var) c12t8: (n: number, s: string) => number");
goTo.marker('87');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('88');
verify.quickInfoIs("number[][]");
verify.quickInfoIs("(var) c12t9: number[][]");
goTo.marker('89');
verify.quickInfoIs("IFoo[]");
verify.quickInfoIs("(var) c12t10: IFoo[]");
goTo.marker('90');
verify.quickInfoIs("{ (n: number, s: string): string; }[]");
verify.quickInfoIs("(var) c12t11: {\n (n: number, s: string): string;\n}[]");
goTo.marker('91');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) n: number");
goTo.marker('92');
verify.quickInfoIs("string");
verify.quickInfoIs("(parameter) s: string");
goTo.marker('93');
verify.quickInfoIs("IBar");
verify.quickInfoIs("(var) c12t12: IBar");
goTo.marker('94');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(property) foo: IFoo");
goTo.marker('95');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(var) c12t13: IFoo");
goTo.marker('96');
verify.quickInfoIs("(i: any, s: any) => any");
verify.quickInfoIs("(property) f: (i: any, s: any) => any");
goTo.marker('97');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) i: any");
goTo.marker('98');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) s: any");
goTo.marker('99');
verify.quickInfoIs("IFoo");
verify.quickInfoIs("(var) c12t14: IFoo");
goTo.marker('100');
verify.quickInfoIs("any[]");
verify.quickInfoIs("(property) a: undefined[]");
goTo.marker('101');
verify.quickInfoIs("(a: number, b: number): number (+ 0 overload(s))");
verify.quickInfoIs("(function) EF1(a: number, b: number): number");
goTo.marker('102');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) a: any");
goTo.marker('103');
verify.quickInfoIs("any");
verify.quickInfoIs("(parameter) b: any");
goTo.marker('110');
verify.quickInfoIs("Point");
verify.quickInfoIs("(property) Point.origin: Point");
goTo.marker('111');
verify.quickInfoIs("(x: number, y: number): Point");
verify.quickInfoIs("(constructor) Point(x: number, y: number): Point");
goTo.marker('112');
verify.quickInfoIs("(dx: number, dy: number): Point");
verify.quickInfoIs("(method) Point.add(dx: number, dy: number): Point");
goTo.marker('113');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) dx: number");
goTo.marker('114');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) dy: number");
goTo.marker('115');
verify.quickInfoIs("(dx: number, dy: number) => Point");
verify.quickInfoIs("(property) add: (dx: number, dy: number) => Point");
goTo.marker('116');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) dx: number");
goTo.marker('117');
verify.quickInfoIs("number");
verify.quickInfoIs("(parameter) dy: number");

View File

@@ -0,0 +1,7 @@
/// <reference path='fourslash.ts'/>
////var f3 = <(x: string) => string> function (/**/x) { return x.toLowerCase(); };
goTo.marker();
verify.quickInfoIs('(parameter) x: string');

View File

@@ -0,0 +1,20 @@
/// <reference path='fourslash.ts'/>
// should not contextually type the RHS because it introduces type parameters
////var obj: { f<T>(x: T): T } = { f: <S>(/*1*/x) => x };
////var obj2: <T>(x: T) => T = <S>(/*2*/x) => x;
////
////class C<T> {
//// obj: <T>(x: T) => T
////}
////var c = new C();
////c.obj = <S>(/*3*/x) => x;
goTo.marker('1');
verify.quickInfoIs('(parameter) x: any');
goTo.marker('2');
verify.quickInfoIs('(parameter) x: any');
goTo.marker('3');
verify.quickInfoIs('(parameter) x: any');

View File

@@ -9,9 +9,9 @@
//// [x: number]: C;
////}
////var x/*1*/ = [null, null];
////var /*1*/x = [null, null];
////var x2: I = [null, null];
////var r/*2*/ = x2[0];
////var /*2*/r = x2[0];
////var a = { name: 'bob', age: 20 };
////var b = { name: 'jim', age: 20, dob: new Date() };
@@ -19,31 +19,31 @@
////var d = { name: 'jim', age: 20, address: 'springfield' };
////var x3: I = [a, b];
////var r3/*3*/ = x3[1];
////var /*3*/r3 = x3[1];
////var x4: I = [a, b, c];
////var r4/*4*/ = x4[1];
////var /*4*/r4 = x4[1];
////var x5/*5*/ = [a, b, c, d];
////var r5/*6*/ = x5[1];
////var /*5*/x5 = [a, b, c, d];
////var /*6*/r5 = x5[1];
// the above code should have a couple errors that will need to be updated with appropriate new (non-error) code and quick info checks
verify.not.errorExistsBetweenMarkers('1', '6');
goTo.marker('1');
verify.quickInfoIs('any[]');
verify.quickInfoIs('(var) x: any[]');
goTo.marker('2');
verify.quickInfoIs('C');
verify.quickInfoIs('(var) r: C');
goTo.marker('3');
verify.quickInfoIs('C');
verify.quickInfoIs('(var) r3: C');
goTo.marker('4');
verify.quickInfoIs('C');
verify.quickInfoIs('(var) r4: C');
goTo.marker('5');
verify.quickInfoIs('{ name: string; age: number; }[]');
verify.quickInfoIs('(var) x5: {\n name: string;\n age: number;\n}[]');
goTo.marker('6');
verify.quickInfoIs('{ name: string; age: number; }');
verify.quickInfoIs('(var) r5: {\n name: string;\n age: number;\n}');

View File

@@ -4,8 +4,8 @@
//// <T, U>(x: T): U
////};
////// x should not be contextually typed
////var f24 = (x/**/) => { return 1 };
////var f24 = (/**/x) => { return 1 };
goTo.marker();
verify.quickInfoIs('any');
verify.quickInfoIs('(parameter) x: any');

View File

@@ -5,8 +5,8 @@
////}
////function f6(x: <T extends I>(p: T) => void) { }
////// x should not be contextually typed so this should be an error
////f6(x/**/ => x<number>())
////f6(/**/x => x<number>())
goTo.marker();
verify.quickInfoIs('any');
verify.quickInfoIs('(parameter) x: any');
verify.numberOfErrorsInCurrentFile(1);

View File

@@ -0,0 +1,13 @@
/// <reference path='fourslash.ts'/>
////interface A { }
////var f44: (x: A) => (y: A) => A = /*1*/x => /*2*/y => /*3*/x;
goTo.marker('1');
verify.quickInfoIs('(parameter) x: A');
goTo.marker('2');
verify.quickInfoIs('(parameter) y: A');
goTo.marker('3');
verify.quickInfoIs('(parameter) x: A');

View File

@@ -13,6 +13,6 @@
////}
goTo.marker('1');
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xy: string');
goTo.marker('2');
verify.quickInfoIs('FooOptions');
verify.quickInfoIs('(parameter) options: FooOptions');

View File

@@ -17,7 +17,7 @@
////}
////var a: BaseCollection<CollectionItem>;
////var r/**/ = a._itemsByKey['x']; // should just say CollectionItem not TItem extends CollectionItem
////var /**/r = a._itemsByKey['x']; // should just say CollectionItem not TItem extends CollectionItem
////var result = r.x;
////a = new DbSet<Entity>();
@@ -25,5 +25,5 @@
////var result2 = r2.x;
goTo.marker('');
verify.quickInfoIs('CollectionItem');
verify.quickInfoIs('(var) r: CollectionItem');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -6,7 +6,7 @@
////}
////var i: I;
////var r/**/ = i[1];
////var /**/r = i[1];
goTo.marker();
verify.quickInfoIs('string');
verify.quickInfoIs('(var) r: string');

View File

@@ -1,6 +1,6 @@
/// <reference path="fourslash.ts" />
//// class A<B, B/**/> { }
//// class A<B, /**/B> { }
goTo.marker();
verify.quickInfoExists();

View File

@@ -0,0 +1,10 @@
/// <reference path='fourslash.ts'/>
////var x/*1*/x = true ? [1] : [undefined];
////var y/*2*/y = true ? [1] : [];
goTo.marker('1');
verify.quickInfoIs('(var) xx: number[]');
goTo.marker('2');
verify.quickInfoIs('(var) yy: number[]');

View File

@@ -18,7 +18,7 @@ verify.numberOfErrorsInCurrentFile(0);
goTo.marker("1");
edit.backspace(1);
edit.insert(" ");
verify.quickInfoIs("typeof C", undefined, "M.C.C", "var");
verify.quickInfoIs("(var) M.C.C: typeof M.C");
// Verify there are no errors
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -10,16 +10,16 @@
// @Filename: exportEqualTypes_file1.ts
///////<reference path='exportEqualTypes_file0.ts'/>
////import test = require('exportEqualTypes_file0');
////var t: test/*1*/; // var 't' should be of type 'test'
////var r1/*2*/ = t(); // Should return a Date
////var r2/*3*/ = t.foo/*4*/; // t should have 'foo' in dropdown list and be of type 'string'
////var t: /*1*/test; // var 't' should be of type 'test'
////var /*2*/r1 = t(); // Should return a Date
////var /*3*/r2 = t./*4*/foo; // t should have 'foo' in dropdown list and be of type 'string'
goTo.marker('1');
verify.quickInfoIs('test');
verify.quickInfoIs('(alias) test');
goTo.marker('2');
verify.quickInfoIs('Date');
verify.quickInfoIs('(var) r1: Date');
goTo.marker('3');
verify.quickInfoIs('string');
verify.quickInfoIs('(var) r2: string');
goTo.marker('4');
verify.memberListContains('foo');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -2,14 +2,14 @@
////interface Foo<T> extends Array<T> { }
////var x: Foo<string>;
////var r/*1*/ = x[0];
////var /*1*/r = x[0];
////interface Foo2 extends Array<string> { }
////var x2: Foo2;
////var r2/*2*/ = x2[0];
////var /*2*/r2 = x2[0];
goTo.marker('1');
verify.quickInfoIs('string');
verify.quickInfoIs('(var) r: string');
goTo.marker('2');
verify.quickInfoIs('string');
verify.quickInfoIs('(var) r2: string');

View File

@@ -1,22 +1,22 @@
/// <reference path="fourslash.ts"/>
////var x = [1, 2, 3];
////var y/*y*/ = x./*1*/pop/*2*/(5);
////var /*y*/y = /*1*/x.pop(5)/*2*/;
////
verify.errorExistsBetweenMarkers("1", "2");
verify.numberOfErrorsInCurrentFile(2);
verify.numberOfErrorsInCurrentFile(1);
// Expected errors are:
// - Supplied parameters do not match any signature of call target.
// - Could not select overload for 'call' expression.
goTo.marker("y");
verify.quickInfoIs("any");
verify.quickInfoIs("(var) y: any");
goTo.eof();
edit.insert("interface Array<T> { pop(def: T): T; }");
verify.not.errorExistsBetweenMarkers("1", "2");
goTo.marker("y");
verify.quickInfoIs("number");
verify.quickInfoIs("(var) y: number");
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -9,11 +9,11 @@
//// bar(): void ;
////}
////var b: B<number>;
////var x/**/ = b.foo2().foo(5).foo(); // 'x' is of type 'void'
////var /**/x = b.foo2().foo(5).foo(); // 'x' is of type 'void'
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
goTo.marker();
verify.quickInfoIs('void');
verify.quickInfoIs('(var) x: void');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -7,9 +7,9 @@
//// b: T;
////}
////var x: I2<Date>;
////var y/**/ = x(undefined); // Typeof y should be Date[]
////var /**/y = x(undefined); // Typeof y should be Date[]
////y.length;
goTo.marker();
verify.quickInfoIs('Date[]');
verify.quickInfoIs('(var) y: Date[]');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -28,19 +28,19 @@
////var /*14*/r4 = a1(/*13*/);
////var v1: a1./*15*/connectExport;
//goTo.file("externalModuleWithExportAssignment_file1.ts");
//goTo.marker('1');
//verify.quickInfoIs("a1");
goTo.file("externalModuleWithExportAssignment_file1.ts");
goTo.marker('1');
verify.quickInfoIs("(alias) a1");
//goTo.marker('2');
//verify.quickInfoIs("{ test1: a1.connectModule; test2(): a1.connectModule; (): a1.connectExport; }", undefined, "a", "var");
goTo.marker('2');
verify.quickInfoIs("(var) a: {\n (): a1.connectExport;\n test1: a1.connectModule;\n test2(): a1.connectModule;\n}", undefined);
//goTo.marker('3');
//verify.quickInfoIs("(res: any, req: any, next: any): void", undefined, "a1.connectModule", "function");
//verify.completionListContains("test1", "a1.connectModule", undefined, "test1", "property");
//verify.completionListContains("test2", "(): a1.connectModule", undefined, "test2", "method");
//verify.not.completionListContains("connectModule");
//verify.not.completionListContains("connectExport");
goTo.marker('3');
verify.quickInfoIs("(property) test1: a1.connectModule(res: any, req: any, next: any) => void", undefined);
verify.completionListContains("test1", "(property) test1: a1.connectModule", undefined);
verify.completionListContains("test2", "(method) test2(): a1.connectModule", undefined);
verify.not.completionListContains("connectModule");
verify.not.completionListContains("connectExport");
goTo.marker('4');
verify.currentSignatureHelpIs("test1(res: any, req: any, next: any): void");
@@ -48,21 +48,21 @@ verify.currentSignatureHelpIs("test1(res: any, req: any, next: any): void");
goTo.marker('5');
verify.currentSignatureHelpIs("test2(): a1.connectModule");
//goTo.marker('6');
//verify.quickInfoIs("a1.connectModule", undefined, "r1", "var");
goTo.marker('6');
verify.quickInfoIs("(var) r1: a1.connectModule", undefined);
goTo.marker('7');
verify.currentSignatureHelpIs("a(): a1.connectExport");
//goTo.marker('8');
//verify.quickInfoIs("a1.connectExport", undefined, "r2", "var");
goTo.marker('8');
verify.quickInfoIs("(var) r2: a1.connectExport", undefined);
//goTo.marker('9');
//verify.quickInfoIs("(res: any, req: any, next: any): void", undefined, "a1.connectModule", "function");
//verify.completionListContains("test1", "a1.connectModule", undefined, "test1", "property");
//verify.completionListContains("test2", "(): a1.connectModule", undefined, "test2", "method");
//verify.not.completionListContains("connectModule");
//verify.not.completionListContains("connectExport");
goTo.marker('9');
verify.quickInfoIs("(property) test1: a1.connectModule(res: any, req: any, next: any) => void", undefined);
verify.completionListContains("test1", "(property) test1: a1.connectModule", undefined);
verify.completionListContains("test2", "(method) test2(): a1.connectModule", undefined);
verify.not.completionListContains("connectModule");
verify.not.completionListContains("connectExport");
goTo.marker('10');
verify.currentSignatureHelpIs("test1(res: any, req: any, next: any): void");
@@ -70,18 +70,19 @@ verify.currentSignatureHelpIs("test1(res: any, req: any, next: any): void");
goTo.marker('11');
verify.currentSignatureHelpIs("test2(): a1.connectModule");
//goTo.marker('12');
//verify.quickInfoIs("a1.connectModule", undefined, "r3", "var");
goTo.marker('12');
verify.quickInfoIs("(var) r3: a1.connectModule", undefined);
goTo.marker('13');
verify.currentSignatureHelpIs("a1(): a1.connectExport");
//goTo.marker('14');
//verify.quickInfoIs("a1.connectExport", undefined, "r4", "var");
goTo.marker('14');
verify.quickInfoIs("(var) r4: a1.connectExport", undefined);
//goTo.marker('15');
//verify.not.completionListContains("test1", "a1.connectModule", undefined, "test1", "property");
//verify.not.completionListContains("test2", "(): a1.connectModule", undefined, "test2", "method");
//verify.completionListContains("connectModule", "a1.connectModule", undefined, "a1.connectModule", "interface");
//verify.completionListContains("connectExport", "a1.connectExport", undefined, "a1.connectExport", "interface");
goTo.marker('15');
verify.not.completionListContains("test1", "(property) test1: a1.connectModule", undefined);
verify.not.completionListContains("test2", "(method) test2(): a1.connectModule", undefined);
// Bug aliases not in completion list
verify.not.completionListContains("connectModule", "interface a1.connectModule", undefined);
verify.not.completionListContains("connectExport", "interface a1.connectExport", undefined);

View File

@@ -3,7 +3,7 @@
////module M {
//// export function C() {}
//// export module C {
//// export var C/**/ = M.C
//// export var /**/C = M.C
//// }
////}
@@ -11,5 +11,5 @@
edit.insert('');
goTo.marker();
verify.quickInfoIs('typeof C');
verify.quickInfoIs('(var) M.C.C: typeof M.C');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -13,7 +13,7 @@
////var a: number[];
////var b/**/ = _(a);
////var /**/b = _(a);
goTo.marker();
verify.quickInfoIs('WrappedArray<number>');
verify.quickInfoIs('(var) b: WrappedArray<number>');

View File

@@ -10,7 +10,7 @@
////var a: number[];
////var b/**/ = _(a); // WrappedArray<any>, should be WrappedArray<number>
////var /**/b = _(a); // WrappedArray<any>, should be WrappedArray<number>
goTo.marker();
verify.quickInfoIs('WrappedArray<number>');
verify.quickInfoIs('(var) b: WrappedArray<number>');

View File

@@ -9,11 +9,11 @@
////}
////var c = new Collection<string>();
////var utils: Utils;
////var r/*1*/ = utils.fold(c, (s, t) => t, "");
////var r2/*2*/ = utils.fold(c, (s, t) => t);
////var /*1*/r = utils.fold(c, (s, t) => t, "");
////var /*2*/r2 = utils.fold(c, (s, t) => t);
goTo.marker('1');
verify.quickInfoIs('string');
verify.quickInfoIs('(var) r: string');
goTo.marker('2');
verify.quickInfoIs('string');
verify.quickInfoIs('(var) r2: string');

View File

@@ -0,0 +1,13 @@
/// <reference path='fourslash.ts'/>
////function apply<T, U extends Date>(source: T[], selector: (x: T) => U) {
//// var /*1*/xs = source.map(selector); // any[]
//// var /*2*/xs2 = source.map((x: T, a, b): U => { return null }); // any[]
////}
goTo.marker('1');
verify.quickInfoIs('(local var) xs: U[]');
goTo.marker('2');
verify.quickInfoIs('(local var) xs2: U[]');

View File

@@ -0,0 +1,101 @@
/// <reference path='fourslash.ts'/>
////interface Collection<T> {
//// length: number;
//// add(x: T): void;
//// remove(x: T): boolean;
////}
////interface Combinators {
//// map<T, U>(c: Collection<T>, f: (x: T) => U): Collection<U>;
//// map<T>(c: Collection<T>, f: (x: T) => any): Collection<any>;
////}
////class A {
//// foo<T>() { return this; }
////}
////class B<T> {
//// foo(x: T): T { return null; }
////}
////var c2: Collection<number>;
////var c3: Collection<Collection<number>>;
////var c4: Collection<A>;
////var c5: Collection<B<any>>;
////var _: Combinators;
////var rf1 = (x: number) => { return x.toFixed() };
////var rf2 = (x: Collection<number>) => { return x.length };
////var rf3 = (x: A) => { return x.foo() };
////var /*9*/r1a = _.map(c2, (/*1*/x) => { return x.toFixed() });
////var /*10*/r1b = _.map(c2, rf1);
////var /*11*/r2a = _.map(c3, (/*2*/x: Collection<number>) => { return x.length });
////var /*12*/r2b = _.map(c3, rf2);
////var /*13*/r3a = _.map(c4, (/*3*/x) => { return x.foo() });
////var /*14*/r3b = _.map(c4, rf3);
////var /*15*/r4a = _.map(c5, (/*4*/x) => { return x.foo(1) });
////var /*17*/r5a = _.map<number, string>(c2, (/*5*/x) => { return x.toFixed() });
////var /*18*/r5b = _.map<number, string>(c2, rf1);
////var /*19*/r6a = _.map<Collection<number>, number>(/*6*/c3, (x: Collection<number>) => { return x.length });
////var /*20*/r6b = _.map<Collection<number>, number>(c3, rf2);
////var /*21*/r7a = _.map<A, A>(c4, (/*7*/x: A) => { return x.foo() });
////var /*22*/r7b = _.map<A, A>(c4, rf3);
////var /*23*/r8a = _.map</*error1*/B/*error2*/, string>(c5, (/*8*/x) => { return x.foo() });
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
goTo.marker('1');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('2');
verify.quickInfoIs('(parameter) x: Collection<number>');
goTo.marker('3');
verify.quickInfoIs('(parameter) x: A');
goTo.marker('4');
verify.quickInfoIs('(parameter) x: B<any>');
goTo.marker('5');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('6');
verify.quickInfoIs('(var) c3: Collection<Collection<number>>');
goTo.marker('7');
verify.quickInfoIs('(parameter) x: A');
goTo.marker('8');
verify.quickInfoIs('(parameter) x: any'); // Specialized to any because no type argument was specified
goTo.marker('9');
verify.quickInfoIs('(var) r1a: Collection<string>');
goTo.marker('10');
verify.quickInfoIs('(var) r1b: Collection<string>');
goTo.marker('11');
verify.quickInfoIs('(var) r2a: Collection<number>');
goTo.marker('12');
verify.quickInfoIs('(var) r2b: Collection<number>');
goTo.marker('13');
verify.quickInfoIs('(var) r3a: Collection<A>');
goTo.marker('14');
verify.quickInfoIs('(var) r3b: Collection<A>');
goTo.marker('15');
verify.quickInfoIs('(var) r4a: Collection<any>');
goTo.marker('17');
verify.quickInfoIs('(var) r5a: Collection<string>');
goTo.marker('18');
verify.quickInfoIs('(var) r5b: Collection<string>');
goTo.marker('19');
verify.quickInfoIs('(var) r6a: Collection<number>');
goTo.marker('20');
verify.quickInfoIs('(var) r6b: Collection<number>');
goTo.marker('21');
verify.quickInfoIs('(var) r7a: Collection<A>');
goTo.marker('22');
verify.quickInfoIs('(var) r7b: Collection<A>');
goTo.marker('23');
verify.quickInfoIs('(var) r8a: Collection<string>');
verify.errorExistsBetweenMarkers('error1', 'error2');

View File

@@ -0,0 +1,136 @@
/// <reference path='fourslash.ts'/>
////interface Collection<T, U> {
//// length: number;
//// add(x: T, y: U): void ;
//// remove(x: T, y: U): boolean;
////}
////}
////interface Combinators {
//// map<T, U, V>(c: Collection<T, U>, f: (x: T, y: U) => V): Collection<T, V>;
//// map<T, U>(c: Collection<T, U>, f: (x: T, y: U) => any): Collection<any, any>;
////}
////}
////class A {
//// foo<T>(): T { return null; }
////}
////}
////class B<T> {
//// foo(x: T): T { return null; }
////}
////}
////var c1: Collection<any, any>;
////var c2: Collection<number, string>;
////var c3: Collection<Collection<number, number>, string>;
////var c4: Collection<number, A>;
////var c5: Collection<number, B<any>>;
////}
////var _: Combinators;
////// param help on open paren for arg 2 should show 'number' not T or 'any'
////// x should be contextually typed to number
////var rf1 = (x: number, y: string) => { return x.toFixed() };
////var rf2 = (x: Collection<number, number>, y: string) => { return x.length };
////var rf3 = (x: number, y: A) => { return y.foo() };
////}
////var /*9*/r1a = _.map/*1c*/(c2, (/*1a*/x, /*1b*/y) => { return x.toFixed() });
////var /*10*/r1b = _.map(c2, rf1);
////}
////var /*11*/r2a = _.map(c3, (/*2a*/x, /*2b*/y) => { return x.length });
////var /*12*/r2b = _.map(c3, rf2);
////}
////var /*13*/r3a = _.map(c4, (/*3a*/x, /*3b*/y) => { return y.foo() });
////var /*14*/r3b = _.map(c4, rf3);
////}
////var /*15*/r4a = _.map(c5, (/*4a*/x, /*4b*/y) => { return y.foo() });
////}
////var /*17*/r5a = _.map<number, string, Date>(c2, /*17error1*/(/*5a*/x, /*5b*/y) => { return x.toFixed() }/*17error2*/);
////var rf1b = (x: number, y: string) => { return new Date() };
////var /*18*/r5b = _.map<number, string, Date>(c2, rf1b);
////
////var /*19*/r6a = _.map<Collection<number, number>, string, Date>(c3, (/*6a*/x,/*6b*/y) => { return new Date(); });
////var rf2b = (x: Collection<number, number>, y: string) => { return new Date(); };
////var /*20*/r6b = _.map<Collection<number, number>, string, Date>(c3, rf2b);
////
////var /*21*/r7a = _.map<number, A, string>(c4, /*21error1*/(/*7a*/x,/*7b*/y) => { return y.foo() }/*21error2*/);
////var /*22*/r7b = _.map<number, A, string>(c4, /*22error1*/rf3/*22error2*/);
////
////var /*23*/r8a = _.map<number, /*error1*/B/*error2*/, string>(c5, (/*8a*/x,/*8b*/y) => { return y.foo() });
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
goTo.marker('2a');
verify.quickInfoIs('(parameter) x: Collection<number, number>');
goTo.marker('2b');
verify.quickInfoIs('(parameter) y: string');
goTo.marker('3a');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('3b');
verify.quickInfoIs('(parameter) y: A');
goTo.marker('4a');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('4b');
verify.quickInfoIs('(parameter) y: B<any>');
goTo.marker('5a');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('5b');
verify.quickInfoIs('(parameter) y: string');
goTo.marker('6a');
verify.quickInfoIs('(parameter) x: Collection<number, number>');
goTo.marker('6b');
verify.quickInfoIs('(parameter) y: string');
goTo.marker('7a');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('7b');
verify.quickInfoIs('(parameter) y: A');
goTo.marker('8a');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('8b');
verify.quickInfoIs('(parameter) y: any'); // Specialized to any because no type argument was specified
goTo.marker('9');
verify.quickInfoIs('(var) r1a: Collection<number, string>');
goTo.marker('10');
verify.quickInfoIs('(var) r1b: Collection<number, string>');
goTo.marker('11');
verify.quickInfoIs('(var) r2a: Collection<Collection<number, number>, number>');
goTo.marker('12');
verify.quickInfoIs('(var) r2b: Collection<Collection<number, number>, number>');
goTo.marker('13');
verify.quickInfoIs('(var) r3a: Collection<number, {}>');
goTo.marker('14');
verify.quickInfoIs('(var) r3b: Collection<number, {}>');
goTo.marker('15');
verify.quickInfoIs('(var) r4a: Collection<number, any>');
goTo.marker('17');
verify.quickInfoIs('(var) r5a: any'); // This is actually due to an error because toFixed does not return a Date
goTo.marker('18');
verify.quickInfoIs('(var) r5b: Collection<number, Date>');
goTo.marker('19');
verify.quickInfoIs('(var) r6a: Collection<Collection<number, number>, Date>');
goTo.marker('20');
verify.quickInfoIs('(var) r6b: Collection<Collection<number, number>, Date>');
goTo.marker('21');
verify.quickInfoIs('(var) r7a: any'); // This call is an error because y.foo() does not return a string
goTo.marker('22');
verify.quickInfoIs('(var) r7b: any'); // This call is an error because y.foo() does not return a string
goTo.marker('23');
verify.quickInfoIs('(var) r8a: Collection<number, string>');
verify.errorExistsBetweenMarkers('error1', 'error2');
verify.errorExistsBetweenMarkers('17error1', '17error2');
verify.errorExistsBetweenMarkers('21error1', '21error2');
verify.errorExistsBetweenMarkers('22error1', '22error2');

View File

@@ -12,16 +12,16 @@
////
////var _: Combinators;
////
////var r1a/*9*/ = _.ma/*1c*/p(c2, (x/*1a*/,y/*1b*/) => { return x + "" }); // check quick info of map here
////var /*9*/r1a = _.ma/*1c*/p(c2, (/*1a*/x,/*1b*/y) => { return x + "" }); // check quick info of map here
goTo.marker('1a');
verify.quickInfoIs('number');
verify.quickInfoIs('(parameter) x: number');
goTo.marker('1b');
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) y: string');
goTo.marker('1c');
verify.quickInfoIs('(c: Collection<number, string>, f: (x: number, y: string) => string): Collection<number, string> (+ 1 overload(s))');
verify.quickInfoIs('(method) Combinators.map<number, string, string>(c: Collection<number, string>, f: (x: number, y: string) => string): Collection<number, string> (+ 1 overload(s))');
goTo.marker('9');
verify.quickInfoIs('Collection<number, string>');
verify.quickInfoIs('(var) r1a: Collection<number, string>');

View File

@@ -13,11 +13,11 @@
////}
////var n = new N.D1();
////var n2/*1*/ = new N.D2<number>();
////var n3/*2*/ = new N.D2();
////var /*1*/n2 = new N.D2<number>();
////var /*2*/n3 = new N.D2();
goTo.marker('1');
verify.quickInfoIs('N.D2<number>');
verify.quickInfoIs('(var) n2: N.D2<number>');
goTo.marker('2')
verify.quickInfoIs('N.D2<{}>');
verify.quickInfoIs('(var) n3: N.D2<{}>');

View File

@@ -5,17 +5,17 @@
//// return (z) => x;
////}
////var r/*2*/ = foo(/*1*/1, "");
////var r2/*4*/ = r(/*3*/"");
////var /*2*/r = foo(/*1*/1, "");
////var /*4*/r2 = r(/*3*/"");
// goTo.marker('1');
// verify.currentSignatureHelpIs('foo(x: number, y: string): (a: string) => number');
//goTo.marker('2');
//verify.quickInfoIs('(a: string) => number');
goTo.marker('2');
verify.quickInfoIs('(var) r: (a: string) => number');
goTo.marker('3');
verify.currentSignatureHelpIs('r(a: string): number');
//goTo.marker('4');
//verify.quickInfoIs('number');
goTo.marker('4');
verify.quickInfoIs('(var) r2: number');

View File

@@ -8,17 +8,17 @@
////}
////var x = new C(1);
////var r/*2*/ = x.foo(/*1*/3);
////var r2/*4*/ = r(/*3*/4);
////var /*2*/r = x.foo(/*1*/3);
////var /*4*/r2 = r(/*3*/4);
goTo.marker('1');
verify.currentSignatureHelpIs('foo(x: number): (a: number) => number');
//goTo.marker('2');
//verify.quickInfoIs('(a: number) => number');
goTo.marker('2');
verify.quickInfoIs('(var) r: (a: number) => number');
goTo.marker('3');
verify.currentSignatureHelpIs('r(a: number): number');
//goTo.marker('4');
//verify.quickInfoIs('number');
goTo.marker('4');
verify.quickInfoIs('(var) r2: number');

View File

@@ -22,28 +22,28 @@
verify.numberOfErrorsInCurrentFile(0);
goTo.marker('1');
verify.quickInfoIs('number[]');
verify.quickInfoIs('(var) bb: number[]');
goTo.marker('2');
verify.quickInfoIs('number[]');
verify.quickInfoIs('(var) cc: number[]');
goTo.marker('3');
verify.quickInfoIs('number[]');
verify.quickInfoIs('(var) dd: number[]');
goTo.marker('4');
verify.quickInfoIs('any[]');
verify.quickInfoIs('(var) bbb: any[]');
goTo.marker('5');
verify.quickInfoIs('any[]');
verify.quickInfoIs('(var) ccc: any[]');
goTo.marker('6');
verify.quickInfoIs('any[]');
verify.quickInfoIs('(var) ddd: any[]');
goTo.marker('7');
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');
goTo.marker('8');
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');
goTo.marker('9');
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');

View File

@@ -0,0 +1,40 @@
/// <reference path='fourslash.ts'/>
////module Underscore {
//// export interface Iterator<T, U> {
//// <T,U>(value: T, index: any, list: any): U;
//// }
////
//// export interface Static {
//// all<T>(list: T[], iterator?: Iterator<T, boolean>, context?: any): T;
//// identity<T>(value: T): T;
//// }
////}
////
////declare var _: Underscore.Static;
////var /*1*/r = _./*11*/all([true, 1, null, 'yes'], _.identity);
////var /*2*/r2 = _./*21*/all([true], _.identity);
////var /*3*/r3 = _./*31*/all([], _.identity);
////var /*4*/r4 = _./*41*/all([<any>true], _.identity);
goTo.marker('1');
verify.quickInfoIs('(var) r: {}');
goTo.marker('11');
verify.quickInfoIs('(method) Underscore.Static.all<{}>(list: {}[], iterator?: Underscore.Iterator<{}, boolean>, context?: any): {}');
goTo.marker('2');
verify.quickInfoIs('(var) r2: boolean');
goTo.marker('21');
verify.quickInfoIs('(method) Underscore.Static.all<boolean>(list: boolean[], iterator?: Underscore.Iterator<boolean, boolean>, context?: any): boolean');
goTo.marker('3');
verify.quickInfoIs('(var) r3: any');
goTo.marker('31');
verify.quickInfoIs('(method) Underscore.Static.all<any>(list: any[], iterator?: Underscore.Iterator<any, boolean>, context?: any): any');
goTo.marker('4');
verify.quickInfoIs('(var) r4: any');
goTo.marker('41');
verify.quickInfoIs('(method) Underscore.Static.all<any>(list: any[], iterator?: Underscore.Iterator<any, boolean>, context?: any): any');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -0,0 +1,40 @@
/// <reference path='fourslash.ts'/>
////module Underscore {
//// export interface Iterator<T, U> {
//// (value: T, index: any, list: any): U;
//// }
////
//// export interface Static {
//// all<T>(list: T[], iterator?: Iterator<T, boolean>, context?: any): T;
//// identity<T>(value: T): T;
//// }
////}
////
////declare var _: Underscore.Static;
////var /*1*/r = _./*11*/all([true, 1, null, 'yes'], _.identity);
////var /*2*/r2 = _./*21*/all([true], _.identity);
////var /*3*/r3 = _./*31*/all([], _.identity);
////var /*4*/r4 = _./*41*/all([<any>true], _.identity);
goTo.marker('1');
verify.quickInfoIs('(var) r: {}');
goTo.marker('11');
verify.quickInfoIs('(method) Underscore.Static.all<{}>(list: {}[], iterator?: Underscore.Iterator<{}, boolean>, context?: any): {}');
goTo.marker('2');
verify.quickInfoIs('(var) r2: boolean');
goTo.marker('21');
verify.quickInfoIs('(method) Underscore.Static.all<boolean>(list: boolean[], iterator?: Underscore.Iterator<boolean, boolean>, context?: any): boolean');
goTo.marker('3');
verify.quickInfoIs('(var) r3: any');
goTo.marker('31');
verify.quickInfoIs('(method) Underscore.Static.all<any>(list: any[], iterator?: Underscore.Iterator<any, boolean>, context?: any): any');
goTo.marker('4');
verify.quickInfoIs('(var) r4: any');
goTo.marker('41');
verify.quickInfoIs('(method) Underscore.Static.all<any>(list: any[], iterator?: Underscore.Iterator<any, boolean>, context?: any): any');
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -11,19 +11,19 @@
////var f/*6*/6: Foo<number> = new Foo<number>(3);
goTo.marker('1');
verify.quickInfoIs('Foo<number>', null, 'f1');
verify.quickInfoIs('(var) f1: Foo<number>', null);
goTo.marker('2');
verify.quickInfoIs('Foo<number>', null, 'f2');
verify.quickInfoIs('(var) f2: Foo<number>', null);
goTo.marker('3');
verify.quickInfoIs('any', null, 'f3');
verify.quickInfoIs('(var) f3: any', null);
goTo.marker('4');
verify.quickInfoIs('Foo<number>', null, 'f4');
verify.quickInfoIs('(var) f4: Foo<number>', null);
goTo.marker('5');
verify.quickInfoIs('any', null, 'f5');
verify.quickInfoIs('(var) f5: any', null);
goTo.marker('6');
verify.quickInfoIs('Foo<number>', null, 'f6');
verify.quickInfoIs('(var) f6: Foo<number>', null);

View File

@@ -13,6 +13,6 @@
////x./**/
goTo.marker();
verify.completionListContains('watch', '() => void');
verify.completionListContains('moveUp', '() => void');
verify.completionListContains('family', 'TModel');
verify.completionListContains('watch', '(property) iBaseScope.watch: () => void');
verify.completionListContains('moveUp', '(property) iMover.moveUp: () => void');
verify.completionListContains('family', '(property) iScope<number>.family: number');

View File

@@ -0,0 +1,24 @@
/// <reference path='fourslash.ts'/>
////interface Foo<T> {
//// x: Foo<string>;
//// y: Foo<number>;
////}
////var f: Foo<number>;
////var /*1*/xx = f.x;
////var /*2*/yy = f.y;
////var f2: Foo<string>;
////var /*3*/x2 = f2.x;
////var /*4*/y2 = f2.y;
goTo.marker('1');
verify.quickInfoIs('(var) xx: Foo<string>');
goTo.marker('2');
verify.quickInfoIs('(var) yy: Foo<number>');
goTo.marker('3');
verify.quickInfoIs('(var) x2: Foo<string>');
goTo.marker('4');
verify.quickInfoIs('(var) y2: Foo<number>');

View File

@@ -0,0 +1,23 @@
/// <reference path='fourslash.ts'/>
////interface Foo<T> {
//// y: Foo<number>;
//// x: Foo<string>;
////}
////var f: Foo<string>;
////var /*1*/x = f.x;
////var /*2*/y = f.y;
////var f2: Foo<number>;
////var /*3*/x2 = f2.x;
////var /*4*/y2 = f2.y;
goTo.marker('1');
verify.quickInfoIs('(var) x: Foo<string>');
goTo.marker('2');
verify.quickInfoIs('(var) y: Foo<number>');
goTo.marker('3');
verify.quickInfoIs('(var) x2: Foo<string>');
goTo.marker('4');
verify.quickInfoIs('(var) y2: Foo<number>');

View File

@@ -0,0 +1,24 @@
/// <reference path='fourslash.ts'/>
////interface Foo<T, U> {
//// x: Foo<T, U>;
//// y: Foo<U, U>;
////}
////var f: Foo<number, string>;
////var /*1*/xx = f.x;
////var /*2*/yy = f.y;
////var f2: Foo<string, number>;
////var /*3*/x2 = f2.x;
////var /*4*/y2 = f2.y;
goTo.marker('1');
verify.quickInfoIs('(var) xx: Foo<number, string>');
goTo.marker('2');
verify.quickInfoIs('(var) yy: Foo<string, string>');
goTo.marker('3');
verify.quickInfoIs('(var) x2: Foo<string, number>');
goTo.marker('4');
verify.quickInfoIs('(var) y2: Foo<number, number>');

View File

@@ -16,7 +16,7 @@ diagnostics.setEditValidation(IncrementalEditValidation.None);
// Resolve without typeCheck
goTo.marker('1');
verify.quickInfoIs("any");
verify.quickInfoIs("(var) b: string");
// TypeCheck
verify.numberOfErrorsInCurrentFile(3);

View File

@@ -0,0 +1,111 @@
/// <reference path='fourslash.ts'/>
////interface Numeric {
//// [x: number]: Date;
////}
////}
////interface Stringy {
//// [x: string]: RegExp;
////}
////}
////interface NumericPlus {
//// [x: number]: Date;
//// foo(): Date;
////}
////}
////interface StringyPlus {
//// [x: string]: RegExp;
//// foo(): RegExp;
////}
////}
////interface NumericG<T> {
//// [x: number]: T;
////}
////}
////interface StringyG<T> {
//// [x: string]: T;
////}
////}
////interface Ty<T> {
//// [x: number]: Ty<T>;
////}
////interface Ty2<T> {
//// [x: number]: { [x: number]: T };
////}
////
////
////}
////var numeric: Numeric;
////var stringy: Stringy;
////var numericPlus: NumericPlus;
////var stringPlus: StringyPlus;
////var numericG: NumericG<Date>;
////var stringyG: StringyG<Date>;
////var ty: Ty<Date>;
////var ty2: Ty2<Date>;
////
////var /*1*/r1 = numeric[1];
////var /*2*/r2 = numeric['1'];
////var /*3*/r3 = stringy[1];
////var /*4*/r4 = stringy['1'];
////var /*5*/r5 = numericPlus[1];
////var /*6*/r6 = numericPlus['1'];
////var /*7*/r7 = stringPlus[1];
////var /*8*/r8 = stringPlus['1'];
////var /*9*/r9 = numericG[1];
////var /*10*/r10 = numericG['1'];
////var /*11*/r11 = stringyG[1];
////var /*12*/r12 = stringyG['1'];
////var /*13*/r13 = ty[1];
////var /*14*/r14 = ty['1'];
////var /*15*/r15 = ty2[1];
////var /*16*/r16 = ty2['1'];
goTo.marker('1');
verify.quickInfoIs('(var) r1: Date');
goTo.marker('2');
verify.quickInfoIs('(var) r2: any');
goTo.marker('3');
verify.quickInfoIs('(var) r3: RegExp');
goTo.marker('4');
verify.quickInfoIs('(var) r4: RegExp');
goTo.marker('5');
verify.quickInfoIs('(var) r5: Date');
goTo.marker('6');
verify.quickInfoIs('(var) r6: any');
goTo.marker('7');
verify.quickInfoIs('(var) r7: RegExp');
goTo.marker('8');
verify.quickInfoIs('(var) r8: RegExp');
goTo.marker('9');
verify.quickInfoIs('(var) r9: Date');
goTo.marker('10');
verify.quickInfoIs('(var) r10: any');
goTo.marker('11');
verify.quickInfoIs('(var) r11: Date');
goTo.marker('12');
verify.quickInfoIs('(var) r12: Date');
goTo.marker('13');
verify.quickInfoIs('(var) r13: Ty<Date>');
goTo.marker('14');
verify.quickInfoIs('(var) r14: any');
goTo.marker('15');
verify.quickInfoIs('(var) r15: {\n [x: number]: Date;\n}');
goTo.marker('16');
verify.quickInfoIs('(var) r16: any');

View File

@@ -3,12 +3,12 @@
////class G<T> { // Introduce type parameter T
//// self: G<T>; // Use T as type argument to form instance type
//// f() {
//// this.self/*1*/ = /*2*/this; // self and this are both of type G<T>
//// this./*1*/self = /*2*/this; // self and this are both of type G<T>
//// }
////}
goTo.marker('1');
verify.quickInfoIs('G<T>');
verify.quickInfoIs('(property) G<T>.self: G<T>');
goTo.marker('2');
verify.quickInfoIs('G<T>');
verify.quickInfoIs('class G<T>');

View File

@@ -4,9 +4,9 @@
////
//// class Foo {
//// static something() {
//// return { "prop": x/**/ };
//// return { "prop": /**/x };
//// }
//// }
goTo.marker();
verify.quickInfoIs("number", "", "x");
verify.quickInfoIs("(var) x: number", "");

View File

@@ -0,0 +1,37 @@
/// <reference path='fourslash.ts'/>
////module mod1 {
//// var mX = 1;
//// function mFunc() { }
//// class mClass { }
//// module mMod { }
//// interface mInt {}
//// export var meX = 1;
//// export function meFunc() { }
//// export class meClass { }
//// export module meMod { export var iMex = 1; }
//// export interface meInt {}
////}
////
////module frmConfirm {
//// import Mod1 = mod1;
//// import iMod1 = mod1./*1*/meMod;
//// Mod1./*2*/meX = 1;
//// iMod1./*3*/iMex = 1;
////}
goTo.marker('1');
verify.completionListContains('meX', '(var) mod1.meX: number');
verify.completionListContains('meFunc', '(function) mod1.meFunc(): void');
verify.completionListContains('meClass', 'class mod1.meClass');
verify.completionListContains('meMod', 'module mod1.meMod');
verify.completionListContains('meInt', 'interface mod1.meInt');
goTo.marker('2');
verify.completionListContains('meX', '(var) mod1.meX: number');
verify.completionListContains('meFunc', '(function) mod1.meFunc(): void');
verify.completionListContains('meClass', 'class mod1.meClass');
verify.completionListContains('meMod', 'module mod1.meMod');
goTo.marker('3');
verify.completionListContains('iMex', '(var) mod1.meMod.iMex: number');

View File

@@ -11,25 +11,26 @@
// @Filename: mergedDeclarationsWithExportAssignment1_file1.ts
///////<reference path='mergedDeclarationsWithExportAssignment1_file0.ts'/>
////import Foo/*1*/ = require('mergedDeclarationsWithExportAssignment1_file0');
////var z/*3*/ = new /*2*/Foo();
////var r2/*5*/ = Foo./*4*/x;
////import /*1*/Foo = require('mergedDeclarationsWithExportAssignment1_file0');
////var /*3*/z = new /*2*/Foo();
////var /*5*/r2 = Foo./*4*/x;
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
goTo.marker('1');
verify.quickInfoIs('Foo');
verify.quickInfoIs('(alias) Foo');
goTo.marker('2');
verify.completionListContains('Foo');
// TODO: bug in completion list
verify.not.completionListContains('Foo');
goTo.marker('3');
verify.quickInfoIs('Foo');
verify.quickInfoIs('(var) z: Foo');
goTo.marker('4');
verify.completionListContains('x');
goTo.marker('5');
verify.quickInfoIs('number');
verify.quickInfoIs('(var) r2: number');

View File

@@ -10,7 +10,7 @@
// Sanity check
goTo.marker('foo');
verify.quickInfoSymbolNameIs('foo');
verify.quickInfoIs('module foo');
// Delete some code
goTo.marker('delete');
@@ -18,4 +18,4 @@ edit.deleteAtCaret('var x;'.length);
// Pull on the RHS of an import
goTo.marker('foo');
verify.quickInfoSymbolNameIs('foo');
verify.quickInfoIs('module foo');

View File

@@ -14,10 +14,10 @@
////}
goTo.marker('1');
verify.quickInfoIs("number", undefined, "M.x", "var");
verify.quickInfoIs("(var) M.x: number", undefined);
goTo.marker('2');
verify.quickInfoIs("number", undefined, "M.x", "var");
verify.quickInfoIs("(var) M.x: number", undefined);
goTo.marker('3');
verify.quickInfoIs("number", undefined, "x", "var");
verify.quickInfoIs("(var) x: number", undefined);

View File

@@ -9,8 +9,8 @@
//// export function foo() { }
////}
////
////var r/*2*/ = C(/*1*/
////var r2/*4*/ = new C(/*3*/ // using void returning function as constructor
////var /*2*/r = C(/*1*/
////var /*4*/r2 = new C(/*3*/ // using void returning function as constructor
////var r3 = C./*5*/
goTo.marker('1');
@@ -18,14 +18,14 @@ verify.completionListContains('C');
edit.insert('C.x);');
goTo.marker('2');
verify.quickInfoIs('void');
verify.quickInfoIs('(var) r: void');
goTo.marker('3');
verify.completionListContains('C');
edit.insert('C.x);');
goTo.marker('4');
verify.quickInfoIs('any');
verify.quickInfoIs('(var) r2: any');
goTo.marker('5');
verify.completionListContains('x');

View File

@@ -6,27 +6,27 @@
//// module M {
//// /*A*/class A {}
//// /*B*/export class B {}
//// class Check { constructor/*check*/(val) {} }
//// export class Check2 { constructor/*check2*/(val) {} }
//// class Check { /*check*/constructor(val) {} }
//// export class Check2 { /*check2*/constructor(val) {} }
//// }
////
edit.disableFormatting();
goTo.marker('check');
verify.quickInfoSymbolNameIs('Check');
verify.quickInfoIs('(constructor) Check(val: any): Check');
goTo.marker('check2');
verify.quickInfoSymbolNameIs('M.Check2');
verify.quickInfoIs('(constructor) M.Check2(val: any): Check2');
goTo.marker('A');
edit.deleteAtCaret('class A {}'.length);
edit.insert('class A { constructor(val) {} }');
edit.moveLeft('(val) {} }'.length);
verify.quickInfoSymbolNameIs('A');
edit.moveLeft('constructor(val) {} }'.length);
verify.quickInfoIs('(constructor) A(val: any): A');
goTo.marker('B');
edit.deleteAtCaret('export class B {}'.length);
edit.insert('export class B { constructor(val) {} }');
edit.moveLeft('(val) {} }'.length);
verify.quickInfoSymbolNameIs('M.B');
edit.moveLeft('constructor(val) {} }'.length);
verify.quickInfoIs('(constructor) M.B(val: any): B');

View File

@@ -0,0 +1,11 @@
/// <reference path='fourslash.ts'/>
////interface I<T> { }
////class C<T> {}
////var /*1*/i: I<any>;
////var /*2*/c: C<I>;
goTo.marker('1');
verify.quickInfoIs('(var) i: I<any>');
goTo.marker('2');
verify.quickInfoIs('(var) c: C<any>');

View File

@@ -0,0 +1,6 @@
/// <reference path='fourslash.ts'/>
////var /**/t2 = { 0: 1, 1: "" };
goTo.marker();
verify.quickInfoIs('(var) t2: {\n 0: number;\n 1: string;\n}');

View File

@@ -1,6 +1,6 @@
/// <reference path='fourslash.ts'/>
////var x/*1*/: {
////var /*1*/x: {
//// func1(x: number): number; // Method signature
//// func2: (x: number) => number; // Function type literal
//// func3: { (x: number): number }; // Object type literal
@@ -8,7 +8,7 @@
////
////x.func1 = x.func2 = x.func3;
////
////var y/*2*/: {
////var /*2*/y: {
//// func4(x: number): number;
//// func4(s: string): string;
//// func5: {
@@ -22,8 +22,8 @@
verify.not.errorExistsAfterMarker('1');
goTo.marker('1');
verify.quickInfoIs('{ func1(x: number): number; func2: (x: number) => number; func3: (x: number) => number; }');
verify.quickInfoIs('(var) x: {\n func1(x: number): number;\n func2: (x: number) => number;\n func3: (x: number) => number;\n}');
goTo.marker('2');
verify.quickInfoIs('{ func4(x: number): number; func4(s: string): string; func5: { (x: number): number; (s: string): string; }; }');
verify.quickInfoIs('(var) y: {\n func4(x: number): number;\n func4(s: string): string;\n func5: {\n (x: number): number;\n (s: string): string;\n };\n}');

View File

@@ -7,12 +7,12 @@
//// (name: 'done'): string;
////}
////var x/*2*/ = foo(/*1*/
////var /*2*/x = foo(/*1*/
goTo.marker('1');
verify.signatureHelpCountIs(4);
verify.currentSignatureHelpIs('foo(name: string): string');
edit.insert('"hi"');
//goTo.marker('2');
//verify.quickInfoIs('string');
goTo.marker('2');
verify.quickInfoIs('(var) x: string');

View File

@@ -18,6 +18,6 @@
////Fo/**/o();
goTo.marker();
verify.quickInfoIs("(): any (+ 12 overload(s))", "", "Foo", "function");
verify.quickInfoIs("(function) Foo(): any (+ 12 overload(s))");

View File

@@ -15,10 +15,10 @@
//// } );
goTo.marker("1");
verify.quickInfoIs('IPromise<string>');
verify.quickInfoIs('(var) p2: IPromise<string>');
goTo.marker("2");
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');
goTo.marker("3");
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');

View File

@@ -16,22 +16,22 @@
goTo.marker("1");
verify.quickInfoIs('IPromise<number>');
verify.quickInfoIs('(var) p1: IPromise<number>');
goTo.marker("2");
verify.quickInfoIs('number');
verify.quickInfoIs('(parameter) xx: number');
goTo.marker("3");
verify.quickInfoIs('IPromise<string>');
verify.quickInfoIs('(var) p2: IPromise<string>');
goTo.marker("4");
verify.quickInfoIs('number');
verify.quickInfoIs('(parameter) xx: number');
goTo.marker("5");
verify.quickInfoIs('IPromise<string>');
verify.quickInfoIs('(var) p3: IPromise<string>');
goTo.marker("6");
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');
goTo.marker("7");
verify.quickInfoIs('string');
verify.quickInfoIs('(parameter) xx: string');

View File

@@ -0,0 +1,11 @@
/// <reference path='fourslash.ts'/>
////class A {}
////A./*1*/prototype;
////A./*2*/
goTo.marker('1');
verify.quickInfoIs('(property) A.prototype: A');
goTo.marker('2');
verify.completionListContains('prototype', '(property) A.prototype: A');

View File

@@ -3,7 +3,7 @@
//// declare module Thing { }
////
//// module Thing {
//// var x/**/: Mode;
//// var /**/x: Mode;
//// }
////
//// module Thing {

View File

@@ -0,0 +1,6 @@
///<reference path="fourslash.ts" />
////var a = { f: /**/a
goTo.marker();
verify.quickInfoIs("(var) a: any", null);

View File

@@ -0,0 +1,6 @@
/// <reference path="fourslash.ts" />
////var /**/x = /aa/;
goTo.marker();
verify.quickInfoIs("(var) x: RegExp");

View File

@@ -3,8 +3,8 @@
////var foo: Function = function (/*1*/a, /*2*/b, /*3*/c) { };
goTo.marker('1');
verify.quickInfoIs('any', "", "a", "parameter");
verify.quickInfoIs('(parameter) a: any', "");
goTo.marker('2');
verify.quickInfoIs('any', "", "b", "parameter");
verify.quickInfoIs('(parameter) b: any', "");
goTo.marker('3');
verify.quickInfoIs('any', "", "c", "parameter");
verify.quickInfoIs('(parameter) c: any', "");

View File

@@ -4,7 +4,7 @@
//// map<U>(iterator: (value: T) => U, context?: any): U[];
////}
////var x: WrappedArray<string>;
////var y/**/ = x.map(s => s.length);
////var /**/y = x.map(s => s.length);
goTo.marker();
verify.quickInfoIs('number[]');
verify.quickInfoIs('(var) y: number[]');

View File

@@ -5,5 +5,5 @@
////A./**/I
goTo.marker();
verify.completionListContains("A", "A");
verify.completionListContains("I", "number");
verify.completionListContains("A", "(alias) A");
verify.completionListContains("I", "(var) I: number");

View File

@@ -2,15 +2,15 @@
// @Filename: app.ts
////export import A = require('app2');
////export var I = 1;
////A.Y/*1*/;
////A.B.A.B.I/*2*/;
////A./*1*/Y;
////A.B.A.B./*2*/I;
// @Filename: app2.ts
////export import B = require('app');
////export var Y = 1;
goTo.marker("1");
verify.quickInfoIs("number", undefined, "A.Y");
verify.quickInfoIs("(var) A.Y: number");
goTo.marker("2");
verify.quickInfoIs("number", undefined "A.B.I");
verify.quickInfoIs("(var) I: number");

View File

@@ -20,10 +20,10 @@
////c4./*4*/prototype;
goTo.marker('1');
verify.quickInfoIs("c1", undefined, "c1.prototype", "property");
verify.quickInfoIs("(property) c1.prototype: c1");
goTo.marker('2');
verify.quickInfoIs("c2<any>", undefined, "c2<T>.prototype", "property");
verify.quickInfoIs("(property) c2<T>.prototype: c2<any>");
goTo.marker('3');
verify.quickInfoIs("c3", undefined, "c3.prototype", "property");
verify.quickInfoIs("(property) c3.prototype: c3");
goTo.marker('4');
verify.quickInfoIs("c4", undefined, "c4.prototype", "property");
verify.quickInfoIs("(property) c4.prototype: c4");

View File

@@ -4,7 +4,7 @@
//// "artist": number;
////}
////var a: Album;
////var x/**/ = a['artist'];
////var /**/x = a['artist'];
goTo.marker();
verify.quickInfoIs('number');
verify.quickInfoIs('(var) x: number');

View File

@@ -4,7 +4,7 @@
//// "artist": T;
////}
////var a: Album<number>;
////var x/**/ = a['artist'];
////var /**/x = a['artist'];
goTo.marker();
verify.quickInfoIs('number');
verify.quickInfoIs('(var) x: number');

View File

@@ -9,4 +9,4 @@
////}
goTo.marker();
verify.quickInfoIs('Greeter');
verify.quickInfoIs('class Greeter');

View File

@@ -10,7 +10,7 @@
// @Filename: c.ts
////import b = require('./b');
////var a = new b.a/**/();
////var a = new b./**/a();
goTo.marker();
verify.quickInfoExists();

View File

@@ -15,7 +15,7 @@ edit.insertLine("");
// Attempt to resolve a symbol
goTo.marker("IPointRef");
verify.quickInfoIs("any"); // not found
verify.quickInfoIs(""); // not found
// trigger typecheck after the partial resolve, we should see errors
verify.errorExistsAfterMarker("IPointRef");

View File

@@ -5,7 +5,7 @@
////function foo13() {
//// return m1;
////}
////var r13/**/ = foo13();
////var /**/r13 = foo13();
goTo.marker();
verify.quickInfoIs('typeof m1');
verify.quickInfoIs('(var) r13: typeof m1');

View File

@@ -2,16 +2,16 @@
////class C {
//// static foo() {
//// var r/*1*/ = this;
//// var /*1*/r = this;
//// }
//// static get x() {
//// var r/*2*/ = this;
//// var /*2*/r = this;
//// return 1;
//// }
////}
goTo.marker('1');
verify.quickInfoIs('typeof C');
verify.quickInfoIs('(local var) r: typeof C');
goTo.marker('2');
verify.quickInfoIs('typeof C');
verify.quickInfoIs('(local var) r: typeof C');

View File

@@ -11,10 +11,10 @@
// Sanity check: type name here should include the type parameter
goTo.marker('1');
verify.quickInfoSymbolNameIs('Dictionary<V>');
verify.quickInfoIs('class Dictionary<V>');
// Add a similar class -- name does not match
goTo.marker('2');
edit.insert("class C2 extends Dictionary<string> { }");
edit.moveLeft('ictionary<string> { }'.length);
verify.quickInfoSymbolNameIs('Dictionary<V>');
verify.quickInfoIs('class Dictionary<V>');

View File

@@ -0,0 +1,13 @@
/// <reference path='fourslash.ts'/>
////class C<T> {
//// foo(x: T) { }
////}
////var /*1*/x = new C<any>(); // Quick Info for x is C<any>
////var /*2*/y = C.prototype; // Quick Info for y is C<{}>
goTo.marker('1');
verify.quickInfoIs('(var) x: C<any>');
goTo.marker('2');
verify.quickInfoIs('(var) y: C<any>');

View File

@@ -0,0 +1,62 @@
/// <reference path='fourslash.ts'/>
////interface Iterator<T, U> {
//// (value: T, index: any, list: any): U;
////}
////
////interface WrappedArray<T> {
//// map<U>(iterator: Iterator<T, U>, context?: any): U[];
////}
////
////interface Underscore {
//// <T>(list: T[]): WrappedArray<T>;
//// map<T, U>(list: T[], iterator: Iterator<T, U>, context?: any): U[];
////}
////
////declare var _: Underscore;
////
////var a: string[];
////var /*1*/b = _.map(a, /*2*/x => x.length); // Was typed any[], should be number[]
////var /*3*/c = _(a).map(/*4*/x => x.length);
////var /*5*/d = a.map(/*6*/x => x.length);
////
////var aa: any[];
////var /*7*/bb = _.map(aa, /*8*/x => x.length);
////var /*9*/cc = _(aa).map(/*10*/x => x.length);
////var /*11*/dd = aa.map(/*12*/x => x.length);
////
////var e = a.map(x => x./*13*/
goTo.marker('1');
verify.quickInfoIs('(var) b: number[]');
goTo.marker('2');
verify.quickInfoIs('(parameter) x: string');
goTo.marker('3');
verify.quickInfoIs('(var) c: number[]');
goTo.marker('4');
verify.quickInfoIs('(parameter) x: string');
goTo.marker('5');
verify.quickInfoIs('(var) d: number[]');
goTo.marker('6');
verify.quickInfoIs('(parameter) x: string');
goTo.marker('7');
verify.quickInfoIs('(var) bb: any[]');
goTo.marker('8');
verify.quickInfoIs('(parameter) x: any');
goTo.marker('9');
verify.quickInfoIs('(var) cc: any[]');
goTo.marker('10');
verify.quickInfoIs('(parameter) x: any');
goTo.marker('11');
verify.quickInfoIs('(var) dd: any[]');
goTo.marker('12');
verify.quickInfoIs('(parameter) x: any');
goTo.marker('13');
verify.completionListContains('length');
verify.not.completionListContains('toFixed');

View File

@@ -8,7 +8,7 @@
// @Filename: verifySingleFileEmitOutput1_file1.ts
////import f = require("verifySingleFileEmitOutput1_file0");
////var b/**/ = new f.A();
////var /**/b = new f.A();
goTo.marker();
verify.quickInfoIs('f.A');
verify.quickInfoIs('(var) b: f.A');

View File

@@ -0,0 +1,18 @@
/// <reference path='fourslash.ts'/>
////var /*1*/a = null; // var a: any
////var /*2*/b = undefined; // var b: any
////var /*3*/c = { x: 0, y: null }; // var c: { x: number, y: any }
////var /*4*/d = [null, undefined]; // var d: any[]
goTo.marker('1');
verify.quickInfoIs('(var) a: any');
goTo.marker('2');
verify.quickInfoIs('(var) b: any');
goTo.marker('3');
verify.quickInfoIs('(var) c: {\n x: number;\n y: any;\n}');
goTo.marker('4');
verify.quickInfoIs('(var) d: any[]');

View File

@@ -5,10 +5,10 @@
////class C<T> { /*C*/constructor(val: T) { } }
////class D<T> { constructor(/*D*/val: T) { } }
////
////new A/*Asig*/<string>();
////new B/*Bsig*/("");
////new C/*Csig*/("");
////new D/*Dsig*/<string>();
////new /*Asig*/A<string>();
////new /*Bsig*/B("");
////new /*Csig*/C("");
////new /*Dsig*/D<string>();
var A = 'A';
var B = 'B';
@@ -17,41 +17,41 @@ var D = 'D'
goTo.marker(B);
edit.insert('constructor(val: T) { }');
goTo.marker('Asig');
verify.quickInfoIs("(): A<string>", null, A, 'constructor');
verify.quickInfoIs("(constructor) A<string>(): A<string>");
goTo.marker('Bsig');
verify.quickInfoIs("(val: string): B<string>", null, B, 'constructor');
verify.quickInfoIs("(constructor) B<string>(val: string): B<string>");
goTo.marker('Csig');
verify.quickInfoIs("(val: string): C<string>", null, C, 'constructor');
verify.quickInfoIs("(constructor) C<string>(val: string): C<string>");
goTo.marker('Dsig');
verify.quickInfoIs("(val: string): D<string>", null, D, 'constructor');
verify.quickInfoIs("(constructor) D<string>(val: string): D<string>");
goTo.marker(C);
edit.deleteAtCaret('constructor(val: T) { }'.length);
goTo.marker('Asig');
verify.quickInfoIs("(): A<string>", null, A, 'constructor');
verify.quickInfoIs("(constructor) A<string>(): A<string>");
goTo.marker('Bsig');
verify.quickInfoIs("(val: string): B<string>", null, B, 'constructor');
verify.quickInfoIs("(constructor) B<string>(val: string): B<string>");
goTo.marker('Csig');
verify.quickInfoIs("(): C<{}>", null, C, 'constructor');
verify.quickInfoIs("(constructor) C<{}>(): C<{}>");
goTo.marker('Dsig');
verify.quickInfoIs("(val: string): D<string>", null, D, 'constructor');
verify.quickInfoIs("(constructor) D<string>(val: string): D<string>");
goTo.marker(D);
edit.deleteAtCaret("val: T".length);
goTo.marker('Asig');
verify.quickInfoIs("(): A<string>", null, A, 'constructor');
verify.quickInfoIs("(constructor) A<string>(): A<string>");
goTo.marker('Bsig');
verify.quickInfoIs("(val: string): B<string>", null, B, 'constructor');
verify.quickInfoIs("(constructor) B<string>(val: string): B<string>");
goTo.marker('Csig');
verify.quickInfoIs("(): C<{}>", null, C, 'constructor');
verify.quickInfoIs("(constructor) C<{}>(): C<{}>");
goTo.marker('Dsig');
verify.quickInfoIs("(): D<string>", null, D, 'constructor');
verify.quickInfoIs("(constructor) D<string>(): D<string>");

View File

@@ -15,7 +15,7 @@ fs.edit.insert("A");
// Bring up completion to force a pull resolve. This will end up resolving several symbols and
// producing unreported diagnostics (i.e. that 'V' wasn't found).
fs.verify.completionListContains("T");
fs.verify.completionEntryDetailIs("T", "T");
fs.verify.completionEntryDetailIs("T", "T in <T>(x: T): void");
// There should now be a single error.
fs.verify.numberOfErrorsInCurrentFile(1);

View File

@@ -1,7 +0,0 @@
/// <reference path='fourslash.ts'/>
////var f3 = <(x: string) => string> function (x/**/) { return x.toLowerCase(); };
goTo.marker();
verify.quickInfoIs('string');

View File

@@ -1,20 +0,0 @@
/// <reference path='fourslash.ts'/>
// should not contextually type the RHS because it introduces type parameters
////var obj: { f<T>(x: T): T } = { f: <S>(x/*1*/) => x };
////var obj2: <T>(x: T) => T = <S>(x/*2*/) => x;
////
////class C<T> {
//// obj: <T>(x: T) => T
////}
////var c = new C();
////c.obj = <S>(x/*3*/) => x;
goTo.marker('1');
verify.quickInfoIs('any');
goTo.marker('2');
verify.quickInfoIs('any');
goTo.marker('3');
verify.quickInfoIs('any');

View File

@@ -1,13 +0,0 @@
/// <reference path='fourslash.ts'/>
////interface A { }
////var f44: (x: A) => (y: A) => A = x/*1*/ => y/*2*/ => x/*3*/;
goTo.marker('1');
verify.quickInfoIs('A');
goTo.marker('2');
verify.quickInfoIs('A');
goTo.marker('3');
verify.quickInfoIs('A');

View File

@@ -1,10 +0,0 @@
/// <reference path='fourslash.ts'/>
////var x/*1*/x = true ? [1] : [undefined];
////var y/*2*/ = true ? [1] : [];
goTo.marker('1');
verify.quickInfoIs('number[]');
goTo.marker('2');
verify.quickInfoIs('number[]');

View File

@@ -1,87 +0,0 @@
/// <reference path='fourslash.ts' />
// @Filename: externalModuleWithExportAssignment_file0.ts
////module m2 {
//// export interface connectModule {
//// (res, req, next): void;
//// }
//// export interface connectExport {
//// use: (mod: connectModule) => connectExport;
//// listen: (port: number) => void;
//// }
////}
////var m2: {
//// (): m2.connectExport;
//// test1: m2.connectModule;
//// test2(): m2.connectModule;
////};
////export = m2;
// @Filename: externalModuleWithExportAssignment_file1.ts
////import /*1*/a1 = require("externalModuleWithExportAssignment_file0");
////export var /*2*/a = a1;
////a./*3*/test1(/*4*/null, null, null);
////var /*6*/r1 = a.test2(/*5*/);
////var /*8*/r2 = a(/*7*/);
////a1./*9*/test1(/*10*/null, null, null);
////var /*12*/r3 = a1.test2(/*11*/);
////var /*14*/r4 = a1(/*13*/);
////var v1: a1./*15*/connectExport;
goTo.file("externalModuleWithExportAssignment_file1.ts");
goTo.marker('1');
verify.quickInfoIs("a1");
goTo.marker('2');
verify.quickInfoIs("{ test1: a1.connectModule; test2(): a1.connectModule; (): a1.connectExport; }", undefined, "a", "var");
goTo.marker('3');
verify.quickInfoIs("(res: any, req: any, next: any): void", undefined, "a1.connectModule", "function");
verify.completionListContains("test1", "a1.connectModule", undefined, "test1", "property");
verify.completionListContains("test2", "(): a1.connectModule", undefined, "test2", "method");
verify.not.completionListContains("connectModule");
verify.not.completionListContains("connectExport");
goTo.marker('4');
verify.currentSignatureHelpIs("test1(res: any, req: any, next: any): void");
goTo.marker('5');
verify.currentSignatureHelpIs("test2(): a1.connectModule");
goTo.marker('6');
verify.quickInfoIs("a1.connectModule", undefined, "r1", "var");
goTo.marker('7');
verify.currentSignatureHelpIs("a(): a1.connectExport");
goTo.marker('8');
verify.quickInfoIs("a1.connectExport", undefined, "r2", "var");
goTo.marker('9');
verify.quickInfoIs("(res: any, req: any, next: any): void", undefined, "a1.connectModule", "function");
verify.completionListContains("test1", "a1.connectModule", undefined, "test1", "property");
verify.completionListContains("test2", "(): a1.connectModule", undefined, "test2", "method");
verify.not.completionListContains("connectModule");
verify.not.completionListContains("connectExport");
goTo.marker('10');
verify.currentSignatureHelpIs("test1(res: any, req: any, next: any): void");
goTo.marker('11');
verify.currentSignatureHelpIs("test2(): a1.connectModule");
goTo.marker('12');
verify.quickInfoIs("a1.connectModule", undefined, "r3", "var");
goTo.marker('13');
verify.currentSignatureHelpIs("a1(): a1.connectExport");
goTo.marker('14');
verify.quickInfoIs("a1.connectExport", undefined, "r4", "var");
goTo.marker('15');
verify.not.completionListContains("test1", "a1.connectModule", undefined, "test1", "property");
verify.not.completionListContains("test2", "(): a1.connectModule", undefined, "test2", "method");
verify.completionListContains("connectModule", "a1.connectModule", undefined, "a1.connectModule", "interface");
verify.completionListContains("connectExport", "a1.connectExport", undefined, "a1.connectExport", "interface");

View File

@@ -1,13 +0,0 @@
/// <reference path='fourslash.ts'/>
////function apply<T, U extends Date>(source: T[], selector: (x: T) => U) {
//// var xs/*1*/ = source.map(selector); // any[]
//// var xs2/*2*/ = source.map((x: T, a, b): U => { return null }); // any[]
////}
goTo.marker('1');
verify.quickInfoIs('U[]');
goTo.marker('2');
verify.quickInfoIs('U[]');

View File

@@ -1,101 +0,0 @@
/// <reference path='fourslash.ts'/>
////interface Collection<T> {
//// length: number;
//// add(x: T): void;
//// remove(x: T): boolean;
////}
////interface Combinators {
//// map<T, U>(c: Collection<T>, f: (x: T) => U): Collection<U>;
//// map<T>(c: Collection<T>, f: (x: T) => any): Collection<any>;
////}
////class A {
//// foo<T>() { return this; }
////}
////class B<T> {
//// foo(x: T): T { return null; }
////}
////var c2: Collection<number>;
////var c3: Collection<Collection<number>>;
////var c4: Collection<A>;
////var c5: Collection<B<any>>;
////var _: Combinators;
////var rf1 = (x: number) => { return x.toFixed() };
////var rf2 = (x: Collection<number>) => { return x.length };
////var rf3 = (x: A) => { return x.foo() };
////var r1a/*9*/ = _.map(c2, (x/*1*/) => { return x.toFixed() });
////var r1b/*10*/ = _.map(c2, rf1);
////var r2a/*11*/ = _.map(c3, (x/*2*/: Collection<number>) => { return x.length });
////var r2b/*12*/ = _.map(c3, rf2);
////var r3a/*13*/ = _.map(c4, (x/*3*/) => { return x.foo() });
////var r3b/*14*/ = _.map(c4, rf3);
////var r4a/*15*/ = _.map(c5, (x/*4*/) => { return x.foo(1) });
////var r5a/*17*/ = _.map<number, string>(c2, (x/*5*/) => { return x.toFixed() });
////var r5b/*18*/ = _.map<number, string>(c2, rf1);
////var r6a/*19*/ = _.map<Collection<number>, number>(c3/*6*/, (x: Collection<number>) => { return x.length });
////var r6b/*20*/ = _.map<Collection<number>, number>(c3, rf2);
////var r7a/*21*/ = _.map<A, A>(c4, (x/*7*/: A) => { return x.foo() });
////var r7b/*22*/ = _.map<A, A>(c4, rf3);
////var r8a/*23*/ = _.map</*error1*/B/*error2*/, string>(c5, (x/*8*/) => { return x.foo() });
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
goTo.marker('1');
verify.quickInfoIs('number');
goTo.marker('2');
verify.quickInfoIs('Collection<number>');
goTo.marker('3');
verify.quickInfoIs('A');
goTo.marker('4');
verify.quickInfoIs('B<any>');
goTo.marker('5');
verify.quickInfoIs('number');
goTo.marker('6');
verify.quickInfoIs('Collection<Collection<number>>');
goTo.marker('7');
verify.quickInfoIs('A');
goTo.marker('8');
verify.quickInfoIs('B<any>'); // Specialized to any because no type argument was specified
goTo.marker('9');
verify.quickInfoIs('Collection<string>');
goTo.marker('10');
verify.quickInfoIs('Collection<string>');
goTo.marker('11');
verify.quickInfoIs('Collection<number>');
goTo.marker('12');
verify.quickInfoIs('Collection<number>');
goTo.marker('13');
verify.quickInfoIs('Collection<A>');
goTo.marker('14');
verify.quickInfoIs('Collection<A>');
goTo.marker('15');
verify.quickInfoIs('Collection<any>');
goTo.marker('17');
verify.quickInfoIs('Collection<string>');
goTo.marker('18');
verify.quickInfoIs('Collection<string>');
goTo.marker('19');
verify.quickInfoIs('Collection<number>');
goTo.marker('20');
verify.quickInfoIs('Collection<number>');
goTo.marker('21');
verify.quickInfoIs('Collection<A>');
goTo.marker('22');
verify.quickInfoIs('Collection<A>');
goTo.marker('23');
verify.quickInfoIs('Collection<string>');
verify.errorExistsBetweenMarkers('error1', 'error2');

View File

@@ -1,136 +0,0 @@
/// <reference path='fourslash.ts'/>
////interface Collection<T, U> {
//// length: number;
//// add(x: T, y: U): void ;
//// remove(x: T, y: U): boolean;
////}
////}
////interface Combinators {
//// map<T, U, V>(c: Collection<T, U>, f: (x: T, y: U) => V): Collection<T, V>;
//// map<T, U>(c: Collection<T, U>, f: (x: T, y: U) => any): Collection<any, any>;
////}
////}
////class A {
//// foo<T>(): T { return null; }
////}
////}
////class B<T> {
//// foo(x: T): T { return null; }
////}
////}
////var c1: Collection<any, any>;
////var c2: Collection<number, string>;
////var c3: Collection<Collection<number, number>, string>;
////var c4: Collection<number, A>;
////var c5: Collection<number, B<any>>;
////}
////var _: Combinators;
////// param help on open paren for arg 2 should show 'number' not T or 'any'
////// x should be contextually typed to number
////var rf1 = (x: number, y: string) => { return x.toFixed() };
////var rf2 = (x: Collection<number, number>, y: string) => { return x.length };
////var rf3 = (x: number, y: A) => { return y.foo() };
////}
////var r1a/*9*/ = _.map/*1c*/(c2, (x/*1a*/, y/*1b*/) => { return x.toFixed() });
////var r1b/*10*/ = _.map(c2, rf1);
////}
////var r2a/*11*/ = _.map(c3, (x/*2a*/, y/*2b*/) => { return x.length });
////var r2b/*12*/ = _.map(c3, rf2);
////}
////var r3a/*13*/ = _.map(c4, (x/*3a*/, y/*3b*/) => { return y.foo() });
////var r3b/*14*/ = _.map(c4, rf3);
////}
////var r4a/*15*/ = _.map(c5, (x/*4a*/, y/*4b*/) => { return y.foo() });
////}
////var r5a/*17*/ = _./*17error1*/map/*17error2*/<number, string, Date>(c2, (x/*5a*/, y/*5b*/) => { return x.toFixed() });
////var rf1b = (x: number, y: string) => { return new Date() };
////var r5b/*18*/ = _.map<number, string, Date>(c2, rf1b);
////
////var r6a/*19*/ = _.map<Collection<number, number>, string, Date>(c3, (x/*6a*/,y/*6b*/) => { return new Date(); });
////var rf2b = (x: Collection<number, number>, y: string) => { return new Date(); };
////var r6b/*20*/ = _.map<Collection<number, number>, string, Date>(c3, rf2b);
////
////var r7a/*21*/ = _./*21error1*/map/*21error2*/<number, A, string>(c4, (x/*7a*/,y/*7b*/) => { return y.foo() });
////var r7b/*22*/ = _./*22error1*/map/*22error2*/<number, A, string>(c4, rf3);
////
////var r8a/*23*/ = _.map<number, /*error1*/B/*error2*/, string>(c5, (x/*8a*/,y/*8b*/) => { return y.foo() });
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
goTo.marker('2a');
verify.quickInfoIs('Collection<number, number>');
goTo.marker('2b');
verify.quickInfoIs('string');
goTo.marker('3a');
verify.quickInfoIs('number');
goTo.marker('3b');
verify.quickInfoIs('A');
goTo.marker('4a');
verify.quickInfoIs('number');
goTo.marker('4b');
verify.quickInfoIs('B<any>');
goTo.marker('5a');
verify.quickInfoIs('number');
goTo.marker('5b');
verify.quickInfoIs('string');
goTo.marker('6a');
verify.quickInfoIs('Collection<number, number>');
goTo.marker('6b');
verify.quickInfoIs('string');
goTo.marker('7a');
verify.quickInfoIs('number');
goTo.marker('7b');
verify.quickInfoIs('A');
goTo.marker('8a');
verify.quickInfoIs('number');
goTo.marker('8b');
verify.quickInfoIs('B<any>'); // Specialized to any because no type argument was specified
goTo.marker('9');
verify.quickInfoIs('Collection<number, string>');
goTo.marker('10');
verify.quickInfoIs('Collection<number, string>');
goTo.marker('11');
verify.quickInfoIs('Collection<Collection<number, number>, number>');
goTo.marker('12');
verify.quickInfoIs('Collection<Collection<number, number>, number>');
goTo.marker('13');
verify.quickInfoIs('Collection<number, {}>');
goTo.marker('14');
verify.quickInfoIs('Collection<number, {}>');
goTo.marker('15');
verify.quickInfoIs('Collection<number, any>');
goTo.marker('17');
verify.quickInfoIs('any'); // This is actually due to an error because toFixed does not return a Date
goTo.marker('18');
verify.quickInfoIs('Collection<number, Date>');
goTo.marker('19');
verify.quickInfoIs('Collection<Collection<number, number>, Date>');
goTo.marker('20');
verify.quickInfoIs('Collection<Collection<number, number>, Date>');
goTo.marker('21');
verify.quickInfoIs('any'); // This call is an error because y.foo() does not return a string
goTo.marker('22');
verify.quickInfoIs('any'); // This call is an error because y.foo() does not return a string
goTo.marker('23');
verify.quickInfoIs('Collection<number, string>');
verify.errorExistsBetweenMarkers('error1', 'error2');
verify.errorExistsBetweenMarkers('17error1', '17error2');
verify.errorExistsBetweenMarkers('21error1', '21error2');
verify.errorExistsBetweenMarkers('22error1', '22error2');

Some files were not shown because too many files have changed in this diff Show More