mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-30 01:04:49 -05:00
Enabling more test cases
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
////module A {
|
||||
//// /*var*/
|
||||
////}
|
||||
////module A/*check*/ {
|
||||
////module /*check*/A {
|
||||
//// var p;
|
||||
////}
|
||||
|
||||
@@ -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[]');
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -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();
|
||||
|
||||
@@ -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');
|
||||
@@ -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();
|
||||
@@ -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');
|
||||
@@ -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");
|
||||
@@ -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');
|
||||
|
||||
20
tests/cases/fourslash/contextualTypingGenericFunction1.ts
Normal file
20
tests/cases/fourslash/contextualTypingGenericFunction1.ts
Normal 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');
|
||||
@@ -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}');
|
||||
@@ -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');
|
||||
|
||||
@@ -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);
|
||||
13
tests/cases/fourslash/contextualTypingReturnExpressions.ts
Normal file
13
tests/cases/fourslash/contextualTypingReturnExpressions.ts
Normal 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');
|
||||
@@ -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');
|
||||
@@ -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);
|
||||
@@ -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');
|
||||
@@ -1,6 +1,6 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
//// class A<B, B/**/> { }
|
||||
//// class A<B, /**/B> { }
|
||||
|
||||
goTo.marker();
|
||||
verify.quickInfoExists();
|
||||
10
tests/cases/fourslash/emptyArrayInference.ts
Normal file
10
tests/cases/fourslash/emptyArrayInference.ts
Normal 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[]');
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -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');
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
@@ -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>');
|
||||
@@ -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>');
|
||||
@@ -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');
|
||||
13
tests/cases/fourslash/genericCombinatorWithConstraints1.ts
Normal file
13
tests/cases/fourslash/genericCombinatorWithConstraints1.ts
Normal 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[]');
|
||||
|
||||
101
tests/cases/fourslash/genericCombinators1.ts
Normal file
101
tests/cases/fourslash/genericCombinators1.ts
Normal 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');
|
||||
136
tests/cases/fourslash/genericCombinators2.ts
Normal file
136
tests/cases/fourslash/genericCombinators2.ts
Normal 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');
|
||||
@@ -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>');
|
||||
@@ -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<{}>');
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
40
tests/cases/fourslash/genericTypeArgumentInference1.ts
Normal file
40
tests/cases/fourslash/genericTypeArgumentInference1.ts
Normal 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);
|
||||
40
tests/cases/fourslash/genericTypeArgumentInference2.ts
Normal file
40
tests/cases/fourslash/genericTypeArgumentInference2.ts
Normal 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);
|
||||
@@ -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);
|
||||
@@ -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');
|
||||
24
tests/cases/fourslash/genericWithSpecializedProperties1.ts
Normal file
24
tests/cases/fourslash/genericWithSpecializedProperties1.ts
Normal 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>');
|
||||
23
tests/cases/fourslash/genericWithSpecializedProperties2.ts
Normal file
23
tests/cases/fourslash/genericWithSpecializedProperties2.ts
Normal 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>');
|
||||
24
tests/cases/fourslash/genericWithSpecializedProperties3.ts
Normal file
24
tests/cases/fourslash/genericWithSpecializedProperties3.ts
Normal 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>');
|
||||
@@ -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);
|
||||
111
tests/cases/fourslash/indexerReturnTypes1.ts
Normal file
111
tests/cases/fourslash/indexerReturnTypes1.ts
Normal 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');
|
||||
@@ -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>');
|
||||
@@ -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", "");
|
||||
37
tests/cases/fourslash/memberListOfModuleInAnotherModule.ts
Normal file
37
tests/cases/fourslash/memberListOfModuleInAnotherModule.ts
Normal 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');
|
||||
@@ -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');
|
||||
|
||||
@@ -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');
|
||||
@@ -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);
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
11
tests/cases/fourslash/noTypeParameterInLHS.ts
Normal file
11
tests/cases/fourslash/noTypeParameterInLHS.ts
Normal 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>');
|
||||
6
tests/cases/fourslash/numericPropertyNames.ts
Normal file
6
tests/cases/fourslash/numericPropertyNames.ts
Normal 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}');
|
||||
@@ -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}');
|
||||
|
||||
@@ -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');
|
||||
@@ -18,6 +18,6 @@
|
||||
////Fo/**/o();
|
||||
|
||||
goTo.marker();
|
||||
verify.quickInfoIs("(): any (+ 12 overload(s))", "", "Foo", "function");
|
||||
verify.quickInfoIs("(function) Foo(): any (+ 12 overload(s))");
|
||||
|
||||
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
11
tests/cases/fourslash/prototypeProperty.ts
Normal file
11
tests/cases/fourslash/prototypeProperty.ts
Normal 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');
|
||||
@@ -3,7 +3,7 @@
|
||||
//// declare module Thing { }
|
||||
////
|
||||
//// module Thing {
|
||||
//// var x/**/: Mode;
|
||||
//// var /**/x: Mode;
|
||||
//// }
|
||||
////
|
||||
//// module Thing {
|
||||
6
tests/cases/fourslash/recursiveObjectLiteral.ts
Normal file
6
tests/cases/fourslash/recursiveObjectLiteral.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
///<reference path="fourslash.ts" />
|
||||
|
||||
////var a = { f: /**/a
|
||||
|
||||
goTo.marker();
|
||||
verify.quickInfoIs("(var) a: any", null);
|
||||
6
tests/cases/fourslash/regexp.ts
Normal file
6
tests/cases/fourslash/regexp.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
////var /**/x = /aa/;
|
||||
|
||||
goTo.marker();
|
||||
verify.quickInfoIs("(var) x: RegExp");
|
||||
@@ -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', "");
|
||||
@@ -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[]');
|
||||
@@ -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");
|
||||
@@ -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");
|
||||
@@ -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");
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
@@ -9,4 +9,4 @@
|
||||
////}
|
||||
|
||||
goTo.marker();
|
||||
verify.quickInfoIs('Greeter');
|
||||
verify.quickInfoIs('class Greeter');
|
||||
@@ -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();
|
||||
@@ -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");
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
@@ -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>');
|
||||
13
tests/cases/fourslash/typedGenericPrototypeMember.ts
Normal file
13
tests/cases/fourslash/typedGenericPrototypeMember.ts
Normal 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>');
|
||||
62
tests/cases/fourslash/underscoreTypings1.ts
Normal file
62
tests/cases/fourslash/underscoreTypings1.ts
Normal 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');
|
||||
@@ -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');
|
||||
18
tests/cases/fourslash/widenedTypes.ts
Normal file
18
tests/cases/fourslash/widenedTypes.ts
Normal 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[]');
|
||||
@@ -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>");
|
||||
@@ -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);
|
||||
@@ -1,7 +0,0 @@
|
||||
/// <reference path='fourslash.ts'/>
|
||||
|
||||
////var f3 = <(x: string) => string> function (x/**/) { return x.toLowerCase(); };
|
||||
|
||||
goTo.marker();
|
||||
verify.quickInfoIs('string');
|
||||
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
@@ -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[]');
|
||||
@@ -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");
|
||||
|
||||
@@ -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[]');
|
||||
|
||||
@@ -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');
|
||||
@@ -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
Reference in New Issue
Block a user