mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Accepting new baselines
This commit is contained in:
parent
83d9aed005
commit
a76a418814
@ -17,7 +17,7 @@ interface IHasVisualizationModel {
|
||||
var xs: IHasVisualizationModel[] = [moduleA];
|
||||
>xs : IHasVisualizationModel[]
|
||||
>IHasVisualizationModel : IHasVisualizationModel
|
||||
>[moduleA] : IHasVisualizationModel[]
|
||||
>[moduleA] : typeof moduleA[]
|
||||
>moduleA : typeof moduleA
|
||||
|
||||
var xs2: typeof moduleA[] = [moduleA];
|
||||
|
||||
@ -189,7 +189,7 @@ module EmptyTypes {
|
||||
>x : number
|
||||
>y : base
|
||||
>base : base
|
||||
>[{ x: 7, y: new derived() }, { x: 5, y: new base() }] : { x: number; y: base; }[]
|
||||
>[{ x: 7, y: new derived() }, { x: 5, y: new base() }] : { x: number; y: derived; }[]
|
||||
>{ x: 7, y: new derived() } : { x: number; y: derived; }
|
||||
>x : number
|
||||
>y : derived
|
||||
@ -206,7 +206,7 @@ module EmptyTypes {
|
||||
>x : boolean
|
||||
>y : base
|
||||
>base : base
|
||||
>[{ x: true, y: new derived() }, { x: false, y: new base() }] : { x: boolean; y: base; }[]
|
||||
>[{ x: true, y: new derived() }, { x: false, y: new base() }] : { x: boolean; y: derived; }[]
|
||||
>{ x: true, y: new derived() } : { x: boolean; y: derived; }
|
||||
>x : boolean
|
||||
>y : derived
|
||||
@ -223,7 +223,7 @@ module EmptyTypes {
|
||||
>x : string
|
||||
>y : base
|
||||
>base : base
|
||||
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : { x: string; y: base; }[]
|
||||
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : { x: string; y: derived; }[]
|
||||
>{ x: undefined, y: new base() } : { x: undefined; y: base; }
|
||||
>x : undefined
|
||||
>undefined : undefined
|
||||
@ -557,7 +557,7 @@ module NonEmptyTypes {
|
||||
>x : string
|
||||
>y : base
|
||||
>base : base
|
||||
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : { x: string; y: base; }[]
|
||||
>[{ x: undefined, y: new base() }, { x: '', y: new derived() }] : Array<{ x: undefined; y: base; } | { x: string; y: derived; }>
|
||||
>{ x: undefined, y: new base() } : { x: undefined; y: base; }
|
||||
>x : undefined
|
||||
>undefined : undefined
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
=== tests/cases/compiler/arrayConcat2.ts ===
|
||||
var a: string[] = [];
|
||||
>a : string[]
|
||||
>[] : string[]
|
||||
>[] : undefined[]
|
||||
|
||||
a.concat("hello", 'world');
|
||||
>a.concat("hello", 'world') : string[]
|
||||
|
||||
@ -25,7 +25,7 @@ var y = new Array<number>();
|
||||
|
||||
var x2: number[] = [];
|
||||
>x2 : number[]
|
||||
>[] : number[]
|
||||
>[] : undefined[]
|
||||
|
||||
var x2: number[] = new Array(1);
|
||||
>x2 : number[]
|
||||
|
||||
@ -40,7 +40,7 @@ function bar(animals: { [n: number]: IAnimal }) { }
|
||||
foo([
|
||||
>foo([ new Giraffe(), new Elephant()]) : void
|
||||
>foo : (animals: IAnimal[]) => void
|
||||
>[ new Giraffe(), new Elephant()] : IAnimal[]
|
||||
>[ new Giraffe(), new Elephant()] : Array<Giraffe | Elephant>
|
||||
|
||||
new Giraffe(),
|
||||
>new Giraffe() : Giraffe
|
||||
@ -54,7 +54,7 @@ foo([
|
||||
bar([
|
||||
>bar([ new Giraffe(), new Elephant()]) : void
|
||||
>bar : (animals: { [x: number]: IAnimal; }) => void
|
||||
>[ new Giraffe(), new Elephant()] : IAnimal[]
|
||||
>[ new Giraffe(), new Elephant()] : Array<Giraffe | Elephant>
|
||||
|
||||
new Giraffe(),
|
||||
>new Giraffe() : Giraffe
|
||||
|
||||
@ -7,5 +7,5 @@ function panic(val: string[], ...opt: string[]) { }
|
||||
panic([], 'one', 'two');
|
||||
>panic([], 'one', 'two') : void
|
||||
>panic : (val: string[], ...opt: string[]) => void
|
||||
>[] : string[]
|
||||
>[] : undefined[]
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ class ActionB extends Action {
|
||||
var x1: Action[] = [
|
||||
>x1 : Action[]
|
||||
>Action : Action
|
||||
>[ { id: 2, trueness: false }, { id: 3, name: "three" }] : Action[]
|
||||
>[ { id: 2, trueness: false }, { id: 3, name: "three" }] : Array<{ id: number; trueness: boolean; } | { id: number; name: string; }>
|
||||
|
||||
{ id: 2, trueness: false },
|
||||
>{ id: 2, trueness: false } : { id: number; trueness: boolean; }
|
||||
@ -42,7 +42,7 @@ var x1: Action[] = [
|
||||
var x2: Action[] = [
|
||||
>x2 : Action[]
|
||||
>Action : Action
|
||||
>[ new ActionA(), new ActionB()] : Action[]
|
||||
>[ new ActionA(), new ActionB()] : Array<ActionA | ActionB>
|
||||
|
||||
new ActionA(),
|
||||
>new ActionA() : ActionA
|
||||
@ -78,7 +78,7 @@ var z1: { id: number }[] =
|
||||
>id : number
|
||||
|
||||
[
|
||||
>[ { id: 2, trueness: false }, { id: 3, name: "three" } ] : { id: number; }[]
|
||||
>[ { id: 2, trueness: false }, { id: 3, name: "three" } ] : Array<{ id: number; trueness: boolean; } | { id: number; name: string; }>
|
||||
|
||||
{ id: 2, trueness: false },
|
||||
>{ id: 2, trueness: false } : { id: number; trueness: boolean; }
|
||||
@ -97,7 +97,7 @@ var z2: { id: number }[] =
|
||||
>id : number
|
||||
|
||||
[
|
||||
>[ new ActionA(), new ActionB() ] : { id: number; }[]
|
||||
>[ new ActionA(), new ActionB() ] : Array<ActionA | ActionB>
|
||||
|
||||
new ActionA(),
|
||||
>new ActionA() : ActionA
|
||||
@ -114,7 +114,7 @@ var z3: { id: number }[] =
|
||||
>id : number
|
||||
|
||||
[
|
||||
>[ new Action(), new ActionA(), new ActionB() ] : { id: number; }[]
|
||||
>[ new Action(), new ActionA(), new ActionB() ] : Action[]
|
||||
|
||||
new Action(),
|
||||
>new Action() : Action
|
||||
|
||||
@ -65,7 +65,7 @@ var context1: { [n: number]: { a: string; b: number; }; } = [{ a: '', b: 0, c: '
|
||||
>n : number
|
||||
>a : string
|
||||
>b : number
|
||||
>[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : { a: string; b: number; }[]
|
||||
>[{ a: '', b: 0, c: '' }, { a: "", b: 3, c: 0 }] : Array<{ a: string; b: number; c: string; } | { a: string; b: number; c: number; }>
|
||||
>{ a: '', b: 0, c: '' } : { a: string; b: number; c: string; }
|
||||
>a : string
|
||||
>b : number
|
||||
@ -105,7 +105,7 @@ class Derived2 extends Base { private n };
|
||||
var context3: Base[] = [new Derived1(), new Derived2()];
|
||||
>context3 : Base[]
|
||||
>Base : Base
|
||||
>[new Derived1(), new Derived2()] : Base[]
|
||||
>[new Derived1(), new Derived2()] : Array<Derived1 | Derived2>
|
||||
>new Derived1() : Derived1
|
||||
>Derived1 : typeof Derived1
|
||||
>new Derived2() : Derived2
|
||||
@ -115,7 +115,7 @@ var context3: Base[] = [new Derived1(), new Derived2()];
|
||||
var context4: Base[] = [new Derived1(), new Derived1()];
|
||||
>context4 : Base[]
|
||||
>Base : Base
|
||||
>[new Derived1(), new Derived1()] : Base[]
|
||||
>[new Derived1(), new Derived1()] : Derived1[]
|
||||
>new Derived1() : Derived1
|
||||
>Derived1 : typeof Derived1
|
||||
>new Derived1() : Derived1
|
||||
|
||||
@ -6,6 +6,6 @@ function method() {
|
||||
>dictionary : { [x: string]: string; }
|
||||
><{ [index: string]: string; }>{} : { [x: string]: string; }
|
||||
>index : string
|
||||
>{} : { [x: string]: string; }
|
||||
>{} : { [x: string]: undefined; }
|
||||
}
|
||||
|
||||
|
||||
@ -26,18 +26,18 @@ interface Transform3D {
|
||||
var style: IBookStyle = {
|
||||
>style : IBookStyle
|
||||
>IBookStyle : IBookStyle
|
||||
>{ initialLeftPageTransforms: (width: number) => { return [ {'ry': null } ]; }} : { initialLeftPageTransforms: (width: number) => NamedTransform[]; }
|
||||
>{ initialLeftPageTransforms: (width: number) => { return [ {'ry': null } ]; }} : { initialLeftPageTransforms: (width: number) => { [x: string]: any; 'ry': any; }[]; }
|
||||
|
||||
initialLeftPageTransforms: (width: number) => {
|
||||
>initialLeftPageTransforms : (width: number) => NamedTransform[]
|
||||
>(width: number) => { return [ {'ry': null } ]; } : (width: number) => NamedTransform[]
|
||||
>initialLeftPageTransforms : (width: number) => { [x: string]: any; 'ry': any; }[]
|
||||
>(width: number) => { return [ {'ry': null } ]; } : (width: number) => { [x: string]: any; 'ry': any; }[]
|
||||
>width : number
|
||||
|
||||
return [
|
||||
>[ {'ry': null } ] : NamedTransform[]
|
||||
>[ {'ry': null } ] : { [x: string]: null; 'ry': null; }[]
|
||||
|
||||
{'ry': null }
|
||||
>{'ry': null } : { [x: string]: Transform3D; 'ry': null; }
|
||||
>{'ry': null } : { [x: string]: null; 'ry': null; }
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ function foo(param: {():number; (i:number):number; }[]) { }; foo([function(){ret
|
||||
>i : number
|
||||
>foo([function(){return 1;}, function(){return 4}]) : void
|
||||
>foo : (param: { (): number; (i: number): number; }[]) => void
|
||||
>[function(){return 1;}, function(){return 4}] : { (): number; (i: number): number; }[]
|
||||
>[function(){return 1;}, function(){return 4}] : { (): number; }[]
|
||||
>function(){return 1;} : () => number
|
||||
>function(){return 4} : () => number
|
||||
|
||||
|
||||
@ -131,11 +131,11 @@ module templa.dom.mvc.composite {
|
||||
>super : typeof AbstractElementController
|
||||
|
||||
this._controllers = [];
|
||||
>this._controllers = [] : templa.mvc.IController<templa.mvc.IModel>[]
|
||||
>this._controllers = [] : undefined[]
|
||||
>this._controllers : templa.mvc.IController<templa.mvc.IModel>[]
|
||||
>this : AbstractCompositeElementController<ModelType>
|
||||
>_controllers : templa.mvc.IController<templa.mvc.IModel>[]
|
||||
>[] : templa.mvc.IController<templa.mvc.IModel>[]
|
||||
>[] : undefined[]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ var ANY1;
|
||||
|
||||
var ANY2: any[] = ["", ""];
|
||||
>ANY2 : any[]
|
||||
>["", ""] : any[]
|
||||
>["", ""] : string[]
|
||||
|
||||
var obj = {x:1,y:null};
|
||||
>obj : { x: number; y: any; }
|
||||
|
||||
@ -49,7 +49,7 @@ b = d2;
|
||||
var r: Base[] = [d1, d2];
|
||||
>r : Base[]
|
||||
>Base : Base
|
||||
>[d1, d2] : Base[]
|
||||
>[d1, d2] : Array<Derived | Derived2>
|
||||
>d1 : Derived
|
||||
>d2 : Derived2
|
||||
|
||||
|
||||
@ -21,7 +21,7 @@ interface IIntervalTreeNode {
|
||||
var test: IIntervalTreeNode[] = [{ interval: { begin: 0 }, children: null }]; // was error here because best common type is {}
|
||||
>test : IIntervalTreeNode[]
|
||||
>IIntervalTreeNode : IIntervalTreeNode
|
||||
>[{ interval: { begin: 0 }, children: null }] : IIntervalTreeNode[]
|
||||
>[{ interval: { begin: 0 }, children: null }] : { interval: { begin: number; }; children: null; }[]
|
||||
>{ interval: { begin: 0 }, children: null } : { interval: { begin: number; }; children: null; }
|
||||
>interval : { begin: number; }
|
||||
>{ begin: 0 } : { begin: number; }
|
||||
|
||||
@ -25,7 +25,7 @@ var moduleMap: { [key: string]: IHasVisualizationModel } = {
|
||||
>moduleMap : { [x: string]: IHasVisualizationModel; }
|
||||
>key : string
|
||||
>IHasVisualizationModel : IHasVisualizationModel
|
||||
>{ "moduleA": moduleA, "moduleB": moduleB} : { [x: string]: IHasVisualizationModel; "moduleA": typeof moduleA; "moduleB": typeof moduleB; }
|
||||
>{ "moduleA": moduleA, "moduleB": moduleB} : { [x: string]: typeof moduleA; "moduleA": typeof moduleA; "moduleB": typeof moduleB; }
|
||||
|
||||
"moduleA": moduleA,
|
||||
>moduleA : typeof moduleA
|
||||
|
||||
@ -109,11 +109,11 @@ for (var a = ['a', 'b']; ;) { }
|
||||
for (var a = <string[]>[]; ;) { }
|
||||
>a : string[]
|
||||
><string[]>[] : string[]
|
||||
>[] : string[]
|
||||
>[] : undefined[]
|
||||
|
||||
for (var a: string[] = []; ;) { }
|
||||
>a : string[]
|
||||
>[] : string[]
|
||||
>[] : undefined[]
|
||||
|
||||
for (var a = new Array<string>(); ;) { }
|
||||
>a : string[]
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
=== tests/cases/compiler/functionCall3.ts ===
|
||||
function foo():any[]{return [1];}
|
||||
>foo : () => any[]
|
||||
>[1] : any[]
|
||||
>[1] : number[]
|
||||
|
||||
var x = foo();
|
||||
>x : any[]
|
||||
|
||||
@ -19,7 +19,7 @@ var x = foo([{a:'s'}]);
|
||||
>x : number
|
||||
>foo([{a:'s'}]) : number
|
||||
>foo : { (bar: { a: number; }[]): string; (bar: { a: any; }[]): number; }
|
||||
>[{a:'s'}] : { a: any; }[]
|
||||
>[{a:'s'}] : { a: string; }[]
|
||||
>{a:'s'} : { a: string; }
|
||||
>a : string
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ class EventBase {
|
||||
private _listeners: { (...args: any[]): void; }[] = [];
|
||||
>_listeners : { (...args: any[]): void; }[]
|
||||
>args : any[]
|
||||
>[] : { (...args: any[]): void; }[]
|
||||
>[] : undefined[]
|
||||
|
||||
add(listener: (...args: any[]) => void): void {
|
||||
>add : (listener: (...args: any[]) => void) => void
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -16,6 +16,6 @@ function map<U>() {
|
||||
var ys: U[] = [];
|
||||
>ys : U[]
|
||||
>U : U
|
||||
>[] : U[]
|
||||
>[] : undefined[]
|
||||
}
|
||||
|
||||
|
||||
@ -14,11 +14,11 @@ class BaseCollection2<TItem extends CollectionItem2> {
|
||||
|
||||
constructor() {
|
||||
this._itemsByKey = {};
|
||||
>this._itemsByKey = {} : { [x: string]: TItem; }
|
||||
>this._itemsByKey = {} : { [x: string]: undefined; }
|
||||
>this._itemsByKey : { [x: string]: TItem; }
|
||||
>this : BaseCollection2<TItem>
|
||||
>_itemsByKey : { [x: string]: TItem; }
|
||||
>{} : { [x: string]: TItem; }
|
||||
>{} : { [x: string]: undefined; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -25,19 +25,19 @@ var ra = foo<any[]>([1, 2]); // any[]
|
||||
>ra : any[]
|
||||
>foo<any[]>([1, 2]) : any[]
|
||||
>foo : <T>(t: T) => T
|
||||
>[1, 2] : any[]
|
||||
>[1, 2] : number[]
|
||||
|
||||
var r2 = foo([]); // any[]
|
||||
>r2 : any[]
|
||||
>foo([]) : any[]
|
||||
>foo : <T>(t: T) => T
|
||||
>[] : any[]
|
||||
>[] : undefined[]
|
||||
|
||||
var r3 = foo<number[]>([]); // number[]
|
||||
>r3 : number[]
|
||||
>foo<number[]>([]) : number[]
|
||||
>foo : <T>(t: T) => T
|
||||
>[] : number[]
|
||||
>[] : undefined[]
|
||||
|
||||
var r4 = foo([1, '']); // {}[]
|
||||
>r4 : Array<string | number>
|
||||
@ -49,12 +49,12 @@ var r5 = foo<any[]>([1, '']); // any[]
|
||||
>r5 : any[]
|
||||
>foo<any[]>([1, '']) : any[]
|
||||
>foo : <T>(t: T) => T
|
||||
>[1, ''] : any[]
|
||||
>[1, ''] : Array<string | number>
|
||||
|
||||
var r6 = foo<Object[]>([1, '']); // Object[]
|
||||
>r6 : Object[]
|
||||
>foo<Object[]>([1, '']) : Object[]
|
||||
>foo : <T>(t: T) => T
|
||||
>Object : Object
|
||||
>[1, ''] : Object[]
|
||||
>[1, ''] : Array<string | number>
|
||||
|
||||
|
||||
@ -69,7 +69,7 @@ var r3 = _.all([], _.identity);
|
||||
>_.all : <T>(list: T[], iterator?: Underscore.Iterator<T, boolean>, context?: any) => T
|
||||
>_ : Underscore.Static
|
||||
>all : <T>(list: T[], iterator?: Underscore.Iterator<T, boolean>, context?: any) => T
|
||||
>[] : any[]
|
||||
>[] : undefined[]
|
||||
>_.identity : <T>(value: T) => T
|
||||
>_ : Underscore.Static
|
||||
>identity : <T>(value: T) => T
|
||||
|
||||
@ -8,7 +8,7 @@ class LazyArray<T> {
|
||||
><{ [objectId: string]: T; }>{} : { [x: string]: T; }
|
||||
>objectId : string
|
||||
>T : T
|
||||
>{} : { [x: string]: T; }
|
||||
>{} : { [x: string]: undefined; }
|
||||
|
||||
array() {
|
||||
>array : () => { [x: string]: T; }
|
||||
|
||||
@ -212,24 +212,24 @@ module WithContextualType {
|
||||
var a: Base[] = [derived, derived2];
|
||||
>a : Base[]
|
||||
>Base : Base
|
||||
>[derived, derived2] : Base[]
|
||||
>[derived, derived2] : Array<Derived | Derived2>
|
||||
>derived : Derived
|
||||
>derived2 : Derived2
|
||||
|
||||
var b: Derived[] = [null];
|
||||
>b : Derived[]
|
||||
>Derived : Derived
|
||||
>[null] : Derived[]
|
||||
>[null] : null[]
|
||||
|
||||
var c: Derived[] = [];
|
||||
>c : Derived[]
|
||||
>Derived : Derived
|
||||
>[] : Derived[]
|
||||
>[] : undefined[]
|
||||
|
||||
var d: { (): Base }[] = [() => derived, () => derived2];
|
||||
>d : { (): Base; }[]
|
||||
>Base : Base
|
||||
>[() => derived, () => derived2] : { (): Base; }[]
|
||||
>[() => derived, () => derived2] : Array<{ (): Derived; } | { (): Derived2; }>
|
||||
>() => derived : () => Derived
|
||||
>derived : Derived
|
||||
>() => derived2 : () => Derived2
|
||||
@ -512,7 +512,7 @@ function foo4<T extends Base, U extends Base>(t: T, u: U) {
|
||||
var k: Base[] = [t, u];
|
||||
>k : Base[]
|
||||
>Base : Base
|
||||
>[t, u] : Base[]
|
||||
>[t, u] : Array<T | U>
|
||||
>t : T
|
||||
>u : U
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@ var ANY1;
|
||||
|
||||
var ANY2: any[] = ["", ""];
|
||||
>ANY2 : any[]
|
||||
>["", ""] : any[]
|
||||
>["", ""] : string[]
|
||||
|
||||
var obj = {x:1,y:null};
|
||||
>obj : { x: number; y: any; }
|
||||
|
||||
@ -24,10 +24,10 @@ var x1 = foo({ 0: 0, 1: 1 }); // type should be number
|
||||
>{ 0: 0, 1: 1 } : { [x: number]: number; 0: number; 1: number; }
|
||||
|
||||
var x2 = foo({ zero: 0, one: 1 });
|
||||
>x2 : {}
|
||||
>foo({ zero: 0, one: 1 }) : {}
|
||||
>x2 : any
|
||||
>foo({ zero: 0, one: 1 }) : any
|
||||
>foo : <T>(items: { [x: number]: T; }) => T
|
||||
>{ zero: 0, one: 1 } : { [x: number]: {}; zero: number; one: number; }
|
||||
>{ zero: 0, one: 1 } : { [x: number]: undefined; zero: number; one: number; }
|
||||
>zero : number
|
||||
>one : number
|
||||
|
||||
|
||||
@ -17,7 +17,7 @@ interface JQuery {
|
||||
var jq:JQuery={ 0: { id : "a" }, 1: { id : "b" } };
|
||||
>jq : JQuery
|
||||
>JQuery : JQuery
|
||||
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: JQueryElement; 0: { id: string; }; 1: { id: string; }; }
|
||||
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: { id: string; }; 0: { id: string; }; 1: { id: string; }; }
|
||||
>{ id : "a" } : { id: string; }
|
||||
>id : string
|
||||
>{ id : "b" } : { id: string; }
|
||||
|
||||
20
tests/baselines/reference/indexer2.errors.txt
Normal file
20
tests/baselines/reference/indexer2.errors.txt
Normal file
@ -0,0 +1,20 @@
|
||||
tests/cases/compiler/indexer2.ts(6,25): error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
|
||||
Types of property 'hasOwnProperty' are incompatible:
|
||||
Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
|
||||
Types of parameters 'v' and 'objectId' are incompatible:
|
||||
Type 'string' is not assignable to type 'number'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/indexer2.ts (1 errors) ====
|
||||
interface IHeapObjectProperty {}
|
||||
interface IDirectChildrenMap {
|
||||
hasOwnProperty(objectId: number) : boolean;
|
||||
[objectId: number] : IHeapObjectProperty[];
|
||||
}
|
||||
var directChildrenMap = <IDirectChildrenMap>{};
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
|
||||
!!! error TS2353: Types of property 'hasOwnProperty' are incompatible:
|
||||
!!! error TS2353: Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
|
||||
!!! error TS2353: Types of parameters 'v' and 'objectId' are incompatible:
|
||||
!!! error TS2353: Type 'string' is not assignable to type 'number'.
|
||||
@ -1,21 +0,0 @@
|
||||
=== tests/cases/compiler/indexer2.ts ===
|
||||
interface IHeapObjectProperty {}
|
||||
>IHeapObjectProperty : IHeapObjectProperty
|
||||
|
||||
interface IDirectChildrenMap {
|
||||
>IDirectChildrenMap : IDirectChildrenMap
|
||||
|
||||
hasOwnProperty(objectId: number) : boolean;
|
||||
>hasOwnProperty : (objectId: number) => boolean
|
||||
>objectId : number
|
||||
|
||||
[objectId: number] : IHeapObjectProperty[];
|
||||
>objectId : number
|
||||
>IHeapObjectProperty : IHeapObjectProperty
|
||||
}
|
||||
var directChildrenMap = <IDirectChildrenMap>{};
|
||||
>directChildrenMap : IDirectChildrenMap
|
||||
><IDirectChildrenMap>{} : IDirectChildrenMap
|
||||
>IDirectChildrenMap : IDirectChildrenMap
|
||||
>{} : { [x: number]: IHeapObjectProperty[]; }
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
tests/cases/compiler/indexer2A.ts(4,5): error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
tests/cases/compiler/indexer2A.ts(7,25): error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
|
||||
Types of property 'hasOwnProperty' are incompatible:
|
||||
Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
|
||||
Types of parameters 'v' and 'objectId' are incompatible:
|
||||
Type 'string' is not assignable to type 'number'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/indexer2A.ts (1 errors) ====
|
||||
==== tests/cases/compiler/indexer2A.ts (2 errors) ====
|
||||
class IHeapObjectProperty { }
|
||||
class IDirectChildrenMap {
|
||||
// Decided to enforce a semicolon after declarations
|
||||
@ -10,4 +15,10 @@ tests/cases/compiler/indexer2A.ts(4,5): error TS2391: Function implementation is
|
||||
!!! error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
[objectId: number]: IHeapObjectProperty[]
|
||||
}
|
||||
var directChildrenMap = <IDirectChildrenMap>{};
|
||||
var directChildrenMap = <IDirectChildrenMap>{};
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2353: Neither type '{ [x: number]: undefined; }' nor type 'IDirectChildrenMap' is assignable to the other:
|
||||
!!! error TS2353: Types of property 'hasOwnProperty' are incompatible:
|
||||
!!! error TS2353: Type '(v: string) => boolean' is not assignable to type '(objectId: number) => boolean':
|
||||
!!! error TS2353: Types of parameters 'v' and 'objectId' are incompatible:
|
||||
!!! error TS2353: Type 'string' is not assignable to type 'number'.
|
||||
@ -3,7 +3,7 @@ var dateMap: { [x: string]: Date; } = {}
|
||||
>dateMap : { [x: string]: Date; }
|
||||
>x : string
|
||||
>Date : Date
|
||||
>{} : { [x: string]: Date; }
|
||||
>{} : { [x: string]: undefined; }
|
||||
|
||||
var r: Date = dateMap["hello"] // result type includes indexer using BCT
|
||||
>r : Date
|
||||
|
||||
@ -17,7 +17,7 @@ class JQuery {
|
||||
var jq:JQuery={ 0: { id : "a" }, 1: { id : "b" } };
|
||||
>jq : JQuery
|
||||
>JQuery : JQuery
|
||||
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: JQueryElement; 0: { id: string; }; 1: { id: string; }; }
|
||||
>{ 0: { id : "a" }, 1: { id : "b" } } : { [x: number]: { id: string; }; 0: { id: string; }; 1: { id: string; }; }
|
||||
>{ id : "a" } : { id: string; }
|
||||
>id : string
|
||||
>{ id : "b" } : { id: string; }
|
||||
|
||||
@ -34,7 +34,7 @@ var result = zipWith([1, 2], ['a', 'b'], pair);
|
||||
>zipWith([1, 2], ['a', 'b'], pair) : { x: number; y: {}; }[]
|
||||
>zipWith : <T, S, U>(a: T[], b: S[], f: (x: T) => (y: S) => U) => U[]
|
||||
>[1, 2] : number[]
|
||||
>['a', 'b'] : {}[]
|
||||
>['a', 'b'] : string[]
|
||||
>pair : <T, S>(x: T) => (y: S) => { x: T; y: S; }
|
||||
|
||||
var i = result[0].x; // number
|
||||
|
||||
@ -25,6 +25,6 @@ foo([]).bar;
|
||||
>foo([]).bar : any
|
||||
>foo([]) : any
|
||||
>foo : <T>(arr: T[]) => T
|
||||
>[] : any[]
|
||||
>[] : undefined[]
|
||||
>bar : any
|
||||
|
||||
|
||||
@ -27,11 +27,11 @@ class Bug {
|
||||
>ok : () => void
|
||||
|
||||
this.values = {};
|
||||
>this.values = {} : { [x: string]: IOptions; }
|
||||
>this.values = {} : { [x: string]: undefined; }
|
||||
>this.values : IMap
|
||||
>this : Bug
|
||||
>values : IMap
|
||||
>{} : { [x: string]: IOptions; }
|
||||
>{} : { [x: string]: undefined; }
|
||||
|
||||
this.values['comments'] = { italic: true };
|
||||
>this.values['comments'] = { italic: true } : { italic: boolean; }
|
||||
@ -46,11 +46,11 @@ class Bug {
|
||||
>shouldBeOK : () => void
|
||||
|
||||
this.values = {
|
||||
>this.values = { comments: { italic: true } } : { [x: string]: IOptions; comments: { italic: boolean; }; }
|
||||
>this.values = { comments: { italic: true } } : { [x: string]: { italic: boolean; }; comments: { italic: boolean; }; }
|
||||
>this.values : IMap
|
||||
>this : Bug
|
||||
>values : IMap
|
||||
>{ comments: { italic: true } } : { [x: string]: IOptions; comments: { italic: boolean; }; }
|
||||
>{ comments: { italic: true } } : { [x: string]: { italic: boolean; }; comments: { italic: boolean; }; }
|
||||
|
||||
comments: { italic: true }
|
||||
>comments : { italic: boolean; }
|
||||
|
||||
@ -20,7 +20,7 @@ class Employee {
|
||||
public reports: Employee[] = [];
|
||||
>reports : Employee[]
|
||||
>Employee : Employee
|
||||
>[] : Employee[]
|
||||
>[] : undefined[]
|
||||
}
|
||||
|
||||
class Employee2 {
|
||||
@ -57,11 +57,11 @@ class Employee2 {
|
||||
>manager : Employee
|
||||
|
||||
this.reports = [];
|
||||
>this.reports = [] : Employee[]
|
||||
>this.reports = [] : undefined[]
|
||||
>this.reports : Employee[]
|
||||
>this : Employee2
|
||||
>reports : Employee[]
|
||||
>[] : Employee[]
|
||||
>[] : undefined[]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ var ANY1;
|
||||
|
||||
var ANY2: any[] = ["", ""];
|
||||
>ANY2 : any[]
|
||||
>["", ""] : any[]
|
||||
>["", ""] : string[]
|
||||
|
||||
var obj: () => {}
|
||||
>obj : () => {}
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts(2,27): error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type.
|
||||
tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts(6,28): error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type.
|
||||
|
||||
|
||||
==== tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts (2 errors) ====
|
||||
|
||||
var x: (a: any) => void = function <T>(x: T) {
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
return null;
|
||||
~~~~~~~~~~~~~~~~
|
||||
};
|
||||
~
|
||||
!!! error TS7011: Function expression, which lacks return-type annotation, implicitly has an 'any' return type.
|
||||
|
||||
var x2: (a: any) => void = function f<T>(x: T) {
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
return null;
|
||||
~~~~~~~~~~~~~~~~
|
||||
};
|
||||
~
|
||||
!!! error TS7010: 'f', which lacks return-type annotation, implicitly has an 'any' return type.
|
||||
@ -0,0 +1,24 @@
|
||||
=== tests/cases/compiler/noImplicitAnyFunctionExpressionAssignment.ts ===
|
||||
|
||||
var x: (a: any) => void = function <T>(x: T) {
|
||||
>x : (a: any) => void
|
||||
>a : any
|
||||
>function <T>(x: T) { return null;} : <T>(x: T) => any
|
||||
>T : T
|
||||
>x : T
|
||||
>T : T
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
var x2: (a: any) => void = function f<T>(x: T) {
|
||||
>x2 : (a: any) => void
|
||||
>a : any
|
||||
>function f<T>(x: T) { return null;} : <T>(x: T) => any
|
||||
>f : <T>(x: T) => any
|
||||
>T : T
|
||||
>x : T
|
||||
>T : T
|
||||
|
||||
return null;
|
||||
};
|
||||
@ -22,7 +22,7 @@ var x: {
|
||||
>A : A
|
||||
|
||||
} = { data: new B() }
|
||||
>{ data: new B() } : { [x: number]: A; data: B; }
|
||||
>{ data: new B() } : { [x: number]: undefined; data: B; }
|
||||
>data : B
|
||||
>new B() : B
|
||||
>B : typeof B
|
||||
|
||||
@ -23,11 +23,11 @@ class Emitter {
|
||||
|
||||
constructor () {
|
||||
this.listeners = {};
|
||||
>this.listeners = {} : { [x: string]: Callback; }
|
||||
>this.listeners = {} : { [x: string]: undefined; }
|
||||
>this.listeners : IMap
|
||||
>this : Emitter
|
||||
>listeners : IMap
|
||||
>{} : { [x: string]: Callback; }
|
||||
>{} : { [x: string]: undefined; }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ var a: {
|
||||
var b: { [x: number]: string; } = { foo: '' };
|
||||
>b : { [x: number]: string; }
|
||||
>x : number
|
||||
>{ foo: '' } : { [x: number]: string; foo: string; }
|
||||
>{ foo: '' } : { [x: number]: undefined; foo: string; }
|
||||
>foo : string
|
||||
|
||||
function foo1(x: A);
|
||||
|
||||
@ -64,7 +64,7 @@ var b: { [x: number]: Derived; } = { foo: <Derived>null };
|
||||
>b : { [x: number]: Derived; }
|
||||
>x : number
|
||||
>Derived : Derived
|
||||
>{ foo: <Derived>null } : { [x: number]: Derived; foo: Derived; }
|
||||
>{ foo: <Derived>null } : { [x: number]: undefined; foo: Derived; }
|
||||
>foo : Derived
|
||||
><Derived>null : Derived
|
||||
>Derived : Derived
|
||||
|
||||
@ -50,7 +50,7 @@ var a: {
|
||||
var b: { [x: number]: string; } = { foo: '' };
|
||||
>b : { [x: number]: string; }
|
||||
>x : number
|
||||
>{ foo: '' } : { [x: number]: string; foo: string; }
|
||||
>{ foo: '' } : { [x: number]: undefined; foo: string; }
|
||||
>foo : string
|
||||
|
||||
function foo1(x: A);
|
||||
|
||||
@ -37,7 +37,7 @@ module Bugs {
|
||||
var tokens:IToken[]= [];
|
||||
>tokens : IToken[]
|
||||
>IToken : IToken
|
||||
>[] : IToken[]
|
||||
>[] : undefined[]
|
||||
|
||||
tokens.push({ startIndex: 1, type: '', bracket: 3 });
|
||||
>tokens.push({ startIndex: 1, type: '', bracket: 3 }) : number
|
||||
|
||||
@ -56,7 +56,7 @@ module Foo.Bar {
|
||||
var greeters: Greeter[] = []; /* inline block comment */
|
||||
>greeters : Greeter[]
|
||||
>Greeter : Greeter
|
||||
>[] : Greeter[]
|
||||
>[] : undefined[]
|
||||
|
||||
greeters[0] = new Greeter(greeting);
|
||||
>greeters[0] = new Greeter(greeting) : Greeter
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
|
||||
var a : any[] = [1,2,"3"];
|
||||
>a : any[]
|
||||
>[1,2,"3"] : any[]
|
||||
>[1,2,"3"] : Array<string | number>
|
||||
|
||||
|
||||
function func1(stuff:any[]) { return stuff; }
|
||||
@ -21,7 +21,7 @@ function func2(stuff1:string, stuff2:number, stuff3:number) {
|
||||
return func1([stuff1, stuff2, stuff3]);
|
||||
>func1([stuff1, stuff2, stuff3]) : any[]
|
||||
>func1 : (stuff: any[]) => any[]
|
||||
>[stuff1, stuff2, stuff3] : any[]
|
||||
>[stuff1, stuff2, stuff3] : Array<string | number>
|
||||
>stuff1 : string
|
||||
>stuff2 : number
|
||||
>stuff3 : number
|
||||
|
||||
@ -8,7 +8,7 @@ class Bug {
|
||||
private static func: Function[] = [
|
||||
>func : Function[]
|
||||
>Function : Function
|
||||
>[ (that: Bug, name: string) => { that.foo(name); } ] : Function[]
|
||||
>[ (that: Bug, name: string) => { that.foo(name); } ] : { (that: Bug, name: string): void; }[]
|
||||
|
||||
(that: Bug, name: string) => {
|
||||
>(that: Bug, name: string) => { that.foo(name); } : (that: Bug, name: string) => void
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
tests/cases/compiler/tupleTypes.ts(1,9): error TS1122: A tuple type element list cannot be empty.
|
||||
tests/cases/compiler/tupleTypes.ts(14,1): error TS2322: Type 'Array<string | number>' is not assignable to type '[number, string]':
|
||||
Property '0' is missing in type 'Array<string | number>'.
|
||||
tests/cases/compiler/tupleTypes.ts(14,1): error TS2322: Type 'undefined[]' is not assignable to type '[number, string]':
|
||||
Property '0' is missing in type 'undefined[]'.
|
||||
tests/cases/compiler/tupleTypes.ts(15,1): error TS2322: Type '[number]' is not assignable to type '[number, string]':
|
||||
Property '1' is missing in type '[number]'.
|
||||
tests/cases/compiler/tupleTypes.ts(17,1): error TS2322: Type '[string, number]' is not assignable to type '[number, string]':
|
||||
Types of property '0' are incompatible:
|
||||
Type 'string' is not assignable to type 'number'.
|
||||
tests/cases/compiler/tupleTypes.ts(41,1): error TS2323: Type 'Array<string | number>' is not assignable to type '[number, string]'.
|
||||
tests/cases/compiler/tupleTypes.ts(41,1): error TS2323: Type 'undefined[]' is not assignable to type '[number, string]'.
|
||||
tests/cases/compiler/tupleTypes.ts(47,1): error TS2322: Type '[number, string]' is not assignable to type 'number[]':
|
||||
Types of property 'pop' are incompatible:
|
||||
Type '() => string | number' is not assignable to type '() => number':
|
||||
@ -42,8 +42,8 @@ tests/cases/compiler/tupleTypes.ts(51,1): error TS2322: Type '[number, {}]' is n
|
||||
|
||||
t = []; // Error
|
||||
~
|
||||
!!! error TS2322: Type 'Array<string | number>' is not assignable to type '[number, string]':
|
||||
!!! error TS2322: Property '0' is missing in type 'Array<string | number>'.
|
||||
!!! error TS2322: Type 'undefined[]' is not assignable to type '[number, string]':
|
||||
!!! error TS2322: Property '0' is missing in type 'undefined[]'.
|
||||
t = [1]; // Error
|
||||
~
|
||||
!!! error TS2322: Type '[number]' is not assignable to type '[number, string]':
|
||||
@ -79,7 +79,7 @@ tests/cases/compiler/tupleTypes.ts(51,1): error TS2322: Type '[number, {}]' is n
|
||||
tt = [undefined, undefined];
|
||||
tt = []; // Error
|
||||
~~
|
||||
!!! error TS2323: Type 'Array<string | number>' is not assignable to type '[number, string]'.
|
||||
!!! error TS2323: Type 'undefined[]' is not assignable to type '[number, string]'.
|
||||
|
||||
var a: number[];
|
||||
var a1: [number, string];
|
||||
|
||||
@ -23,7 +23,7 @@ interface IMenuItem {
|
||||
var menuData: IMenuItem[] = [
|
||||
>menuData : IMenuItem[]
|
||||
>IMenuItem : IMenuItem
|
||||
>[ { "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" }, { "id": "productName", "type": "default", "link": "", "text": "Product Name" }] : IMenuItem[]
|
||||
>[ { "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" }, { "id": "productName", "type": "default", "link": "", "text": "Product Name" }] : Array<{ "id": string; "type": string; "link": string; "icon": string; } | { "id": string; "type": string; "link": string; "text": string; }>
|
||||
{
|
||||
>{ "id": "ourLogo", "type": "image", "link": "", "icon": "modules/menu/logo.svg" } : { "id": string; "type": string; "link": string; "icon": string; }
|
||||
|
||||
|
||||
@ -15,5 +15,5 @@ var a = f([], 3); // should be number
|
||||
>a : number
|
||||
>f([], 3) : number
|
||||
>f : <T>(arr: T[], elemnt: T) => T
|
||||
>[] : number[]
|
||||
>[] : undefined[]
|
||||
|
||||
|
||||
@ -104,7 +104,7 @@ var flat = _.reduceRight(list, (a, b) => a.concat(b), []);
|
||||
>a : number[]
|
||||
>concat : { <U extends number[]>(...items: U[]): number[]; (...items: number[]): number[]; }
|
||||
>b : number[]
|
||||
>[] : number[]
|
||||
>[] : undefined[]
|
||||
|
||||
var even = _.find([1, 2, 3, 4, 5, 6], (num) => num % 2 == 0);
|
||||
>even : number
|
||||
@ -200,7 +200,7 @@ _.invoke([[5, 1, 7], [3, 2, 1]], 'sort');
|
||||
>_.invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary<any>, methodName: string, ...args: any[]): any[]; }
|
||||
>_ : Underscore.Static
|
||||
>invoke : { (list: any[], methodName: string, ...args: any[]): any[]; (list: Dictionary<any>, methodName: string, ...args: any[]): any[]; }
|
||||
>[[5, 1, 7], [3, 2, 1]] : any[]
|
||||
>[[5, 1, 7], [3, 2, 1]] : number[][]
|
||||
>[5, 1, 7] : number[]
|
||||
>[3, 2, 1] : number[]
|
||||
|
||||
@ -375,14 +375,14 @@ _.flatten([1, 2, 3, 4]);
|
||||
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>_ : Underscore.Static
|
||||
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>[1, 2, 3, 4] : any[]
|
||||
>[1, 2, 3, 4] : number[]
|
||||
|
||||
_.flatten([1, [2]]);
|
||||
>_.flatten([1, [2]]) : {}[]
|
||||
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>_ : Underscore.Static
|
||||
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>[1, [2]] : any[]
|
||||
>[1, [2]] : Array<number | number[]>
|
||||
>[2] : number[]
|
||||
|
||||
// typescript doesn't like the elements being different
|
||||
@ -391,7 +391,7 @@ _.flatten([1, [2], [3, [[4]]]]);
|
||||
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>_ : Underscore.Static
|
||||
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>[1, [2], [3, [[4]]]] : any[]
|
||||
>[1, [2], [3, [[4]]]] : Array<number | Array<number | number[][]>>
|
||||
>[2] : number[]
|
||||
>[3, [[4]]] : Array<number | number[][]>
|
||||
>[[4]] : number[][]
|
||||
@ -402,7 +402,7 @@ _.flatten([1, [2], [3, [[4]]]], true);
|
||||
>_.flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>_ : Underscore.Static
|
||||
>flatten : { <T>(list: T[][]): T[]; <T>(array: any[], shallow?: boolean): T[]; }
|
||||
>[1, [2], [3, [[4]]]] : any[]
|
||||
>[1, [2], [3, [[4]]]] : Array<number | Array<number | number[][]>>
|
||||
>[2] : number[]
|
||||
>[3, [[4]]] : Array<number | number[][]>
|
||||
>[[4]] : number[][]
|
||||
@ -463,17 +463,17 @@ _.object(['moe', 'larry', 'curly'], [30, 40, 50]);
|
||||
>_ : Underscore.Static
|
||||
>object : { (list: any[][]): any; (keys: string[], values: any[]): any; }
|
||||
>['moe', 'larry', 'curly'] : string[]
|
||||
>[30, 40, 50] : any[]
|
||||
>[30, 40, 50] : number[]
|
||||
|
||||
_.object([['moe', 30], ['larry', 40], ['curly', 50]]);
|
||||
>_.object([['moe', 30], ['larry', 40], ['curly', 50]]) : any
|
||||
>_.object : { (list: any[][]): any; (keys: string[], values: any[]): any; }
|
||||
>_ : Underscore.Static
|
||||
>object : { (list: any[][]): any; (keys: string[], values: any[]): any; }
|
||||
>[['moe', 30], ['larry', 40], ['curly', 50]] : any[][]
|
||||
>['moe', 30] : any[]
|
||||
>['larry', 40] : any[]
|
||||
>['curly', 50] : any[]
|
||||
>[['moe', 30], ['larry', 40], ['curly', 50]] : Array<string | number>[]
|
||||
>['moe', 30] : Array<string | number>
|
||||
>['larry', 40] : Array<string | number>
|
||||
>['curly', 50] : Array<string | number>
|
||||
|
||||
_.indexOf([1, 2, 3], 2);
|
||||
>_.indexOf([1, 2, 3], 2) : number
|
||||
|
||||
@ -117,11 +117,11 @@ var a = ['a', 'b']
|
||||
var a = <string[]>[];
|
||||
>a : string[]
|
||||
><string[]>[] : string[]
|
||||
>[] : string[]
|
||||
>[] : undefined[]
|
||||
|
||||
var a: string[] = [];
|
||||
>a : string[]
|
||||
>[] : string[]
|
||||
>[] : undefined[]
|
||||
|
||||
var a = new Array<string>();
|
||||
>a : string[]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user