mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Accept correct baselines for symbol property tests
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty10.ts(10,5): error TS2322: Type 'I' is not assignable to type 'C'.
|
||||
Types of property '[Symbol.iterator]' are incompatible.
|
||||
Type '{ x: any; }' is not assignable to type '{ x: any; y: any; }'.
|
||||
Property 'y' is missing in type '{ x: any; }'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty10.ts (1 errors) ====
|
||||
class C {
|
||||
[Symbol.iterator]: { x; y };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]?: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
var c: C = i;
|
||||
~
|
||||
!!! error TS2322: Type 'I' is not assignable to type 'C'.
|
||||
!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
|
||||
!!! error TS2322: Type '{ x: any; }' is not assignable to type '{ x: any; y: any; }'.
|
||||
!!! error TS2322: Property 'y' is missing in type '{ x: any; }'.
|
||||
@@ -0,0 +1,21 @@
|
||||
//// [symbolProperty10.ts]
|
||||
class C {
|
||||
[Symbol.iterator]: { x; y };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]?: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
var c: C = i;
|
||||
|
||||
//// [symbolProperty10.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
var i;
|
||||
i = new C;
|
||||
var c = i;
|
||||
@@ -0,0 +1,19 @@
|
||||
//// [symbolProperty11.ts]
|
||||
class C { }
|
||||
interface I {
|
||||
[Symbol.iterator]?: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
var c: C = i;
|
||||
|
||||
//// [symbolProperty11.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
var i;
|
||||
i = new C;
|
||||
var c = i;
|
||||
@@ -0,0 +1,29 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty11.ts ===
|
||||
class C { }
|
||||
>C : C
|
||||
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.iterator]?: { x };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
}
|
||||
|
||||
var i: I;
|
||||
>i : I
|
||||
>I : I
|
||||
|
||||
i = new C;
|
||||
>i = new C : C
|
||||
>i : I
|
||||
>new C : C
|
||||
>C : typeof C
|
||||
|
||||
var c: C = i;
|
||||
>c : C
|
||||
>C : C
|
||||
>i : I
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty12.ts(9,1): error TS2322: Type 'C' is not assignable to type 'I'.
|
||||
Property '[Symbol.iterator]' is private in type 'C' but not in type 'I'.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty12.ts(10,5): error TS2322: Type 'I' is not assignable to type 'C'.
|
||||
Property '[Symbol.iterator]' is private in type 'C' but not in type 'I'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty12.ts (2 errors) ====
|
||||
class C {
|
||||
private [Symbol.iterator]: { x };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
~
|
||||
!!! error TS2322: Type 'C' is not assignable to type 'I'.
|
||||
!!! error TS2322: Property '[Symbol.iterator]' is private in type 'C' but not in type 'I'.
|
||||
var c: C = i;
|
||||
~
|
||||
!!! error TS2322: Type 'I' is not assignable to type 'C'.
|
||||
!!! error TS2322: Property '[Symbol.iterator]' is private in type 'C' but not in type 'I'.
|
||||
@@ -0,0 +1,21 @@
|
||||
//// [symbolProperty12.ts]
|
||||
class C {
|
||||
private [Symbol.iterator]: { x };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
var c: C = i;
|
||||
|
||||
//// [symbolProperty12.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
var i;
|
||||
i = new C;
|
||||
var c = i;
|
||||
@@ -0,0 +1,27 @@
|
||||
//// [symbolProperty13.ts]
|
||||
class C {
|
||||
[Symbol.iterator]: { x; y };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]: { x };
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
declare function foo(a: any): any;
|
||||
|
||||
declare function bar(i: C): C;
|
||||
declare function bar(a: any): any;
|
||||
|
||||
foo(new C);
|
||||
var i: I;
|
||||
bar(i);
|
||||
|
||||
//// [symbolProperty13.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
foo(new C);
|
||||
var i;
|
||||
bar(i);
|
||||
@@ -0,0 +1,56 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty13.ts ===
|
||||
class C {
|
||||
>C : C
|
||||
|
||||
[Symbol.iterator]: { x; y };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
>y : any
|
||||
}
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.iterator]: { x };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>i : I
|
||||
>I : I
|
||||
>I : I
|
||||
|
||||
declare function foo(a: any): any;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
declare function bar(i: C): C;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : C
|
||||
>C : C
|
||||
>C : C
|
||||
|
||||
declare function bar(a: any): any;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
foo(new C);
|
||||
>foo(new C) : I
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>new C : C
|
||||
>C : typeof C
|
||||
|
||||
var i: I;
|
||||
>i : I
|
||||
>I : I
|
||||
|
||||
bar(i);
|
||||
>bar(i) : any
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : I
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
//// [symbolProperty14.ts]
|
||||
class C {
|
||||
[Symbol.iterator]: { x; y };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]?: { x };
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
declare function foo(a: any): any;
|
||||
|
||||
declare function bar(i: C): C;
|
||||
declare function bar(a: any): any;
|
||||
|
||||
foo(new C);
|
||||
var i: I;
|
||||
bar(i);
|
||||
|
||||
//// [symbolProperty14.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
foo(new C);
|
||||
var i;
|
||||
bar(i);
|
||||
@@ -0,0 +1,56 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty14.ts ===
|
||||
class C {
|
||||
>C : C
|
||||
|
||||
[Symbol.iterator]: { x; y };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
>y : any
|
||||
}
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.iterator]?: { x };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>i : I
|
||||
>I : I
|
||||
>I : I
|
||||
|
||||
declare function foo(a: any): any;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
declare function bar(i: C): C;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : C
|
||||
>C : C
|
||||
>C : C
|
||||
|
||||
declare function bar(a: any): any;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
foo(new C);
|
||||
>foo(new C) : I
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>new C : C
|
||||
>C : typeof C
|
||||
|
||||
var i: I;
|
||||
>i : I
|
||||
>I : I
|
||||
|
||||
bar(i);
|
||||
>bar(i) : any
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : I
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
//// [symbolProperty15.ts]
|
||||
class C { }
|
||||
interface I {
|
||||
[Symbol.iterator]?: { x };
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
declare function foo(a: any): any;
|
||||
|
||||
declare function bar(i: C): C;
|
||||
declare function bar(a: any): any;
|
||||
|
||||
foo(new C);
|
||||
var i: I;
|
||||
bar(i);
|
||||
|
||||
//// [symbolProperty15.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
foo(new C);
|
||||
var i;
|
||||
bar(i);
|
||||
@@ -0,0 +1,49 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty15.ts ===
|
||||
class C { }
|
||||
>C : C
|
||||
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.iterator]?: { x };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>i : I
|
||||
>I : I
|
||||
>I : I
|
||||
|
||||
declare function foo(a: any): any;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
declare function bar(i: C): C;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : C
|
||||
>C : C
|
||||
>C : C
|
||||
|
||||
declare function bar(a: any): any;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
foo(new C);
|
||||
>foo(new C) : any
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>new C : C
|
||||
>C : typeof C
|
||||
|
||||
var i: I;
|
||||
>i : I
|
||||
>I : I
|
||||
|
||||
bar(i);
|
||||
>bar(i) : C
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : I
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
//// [symbolProperty16.ts]
|
||||
class C {
|
||||
private [Symbol.iterator]: { x };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]: { x };
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
declare function foo(a: any): any;
|
||||
|
||||
declare function bar(i: C): C;
|
||||
declare function bar(a: any): any;
|
||||
|
||||
foo(new C);
|
||||
var i: I;
|
||||
bar(i);
|
||||
|
||||
//// [symbolProperty16.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
foo(new C);
|
||||
var i;
|
||||
bar(i);
|
||||
@@ -0,0 +1,55 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty16.ts ===
|
||||
class C {
|
||||
>C : C
|
||||
|
||||
private [Symbol.iterator]: { x };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
}
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.iterator]: { x };
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>x : any
|
||||
}
|
||||
|
||||
declare function foo(i: I): I;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>i : I
|
||||
>I : I
|
||||
>I : I
|
||||
|
||||
declare function foo(a: any): any;
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
declare function bar(i: C): C;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : C
|
||||
>C : C
|
||||
>C : C
|
||||
|
||||
declare function bar(a: any): any;
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>a : any
|
||||
|
||||
foo(new C);
|
||||
>foo(new C) : any
|
||||
>foo : { (i: I): I; (a: any): any; }
|
||||
>new C : C
|
||||
>C : typeof C
|
||||
|
||||
var i: I;
|
||||
>i : I
|
||||
>I : I
|
||||
|
||||
bar(i);
|
||||
>bar(i) : any
|
||||
>bar : { (i: C): C; (a: any): any; }
|
||||
>i : I
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
//// [symbolProperty17.ts]
|
||||
interface I {
|
||||
[Symbol.iterator]: number;
|
||||
[s: Symbol]: string;
|
||||
"__@iterator": string;
|
||||
}
|
||||
|
||||
var i: I;
|
||||
var it = i[Symbol.iterator];
|
||||
|
||||
//// [symbolProperty17.js]
|
||||
var i;
|
||||
var it = i[Symbol.iterator];
|
||||
@@ -0,0 +1,23 @@
|
||||
//// [symbolProperty18.ts]
|
||||
var i = {
|
||||
[Symbol.iterator]: 0,
|
||||
[Symbol.toStringTag]() { return "" },
|
||||
set [Symbol.toPrimitive](p: boolean) { }
|
||||
}
|
||||
|
||||
var it = i[Symbol.iterator];
|
||||
var str = i[Symbol.toStringTag]();
|
||||
i[Symbol.toPrimitive] = false;
|
||||
|
||||
//// [symbolProperty18.js]
|
||||
var i = {
|
||||
[Symbol.iterator]: 0,
|
||||
[Symbol.toStringTag]() {
|
||||
return "";
|
||||
},
|
||||
set [Symbol.toPrimitive](p) {
|
||||
}
|
||||
};
|
||||
var it = i[Symbol.iterator];
|
||||
var str = i[Symbol.toStringTag]();
|
||||
i[Symbol.toPrimitive] = false;
|
||||
@@ -0,0 +1,18 @@
|
||||
//// [symbolProperty19.ts]
|
||||
var i = {
|
||||
[Symbol.iterator]: { p: null },
|
||||
[Symbol.toStringTag]() { return { p: undefined }; }
|
||||
}
|
||||
|
||||
var it = i[Symbol.iterator];
|
||||
var str = i[Symbol.toStringTag]();
|
||||
|
||||
//// [symbolProperty19.js]
|
||||
var i = {
|
||||
[Symbol.iterator]: { p: null },
|
||||
[Symbol.toStringTag]() {
|
||||
return { p: undefined };
|
||||
}
|
||||
};
|
||||
var it = i[Symbol.iterator];
|
||||
var str = i[Symbol.toStringTag]();
|
||||
@@ -0,0 +1,18 @@
|
||||
//// [symbolProperty20.ts]
|
||||
interface I {
|
||||
[Symbol.iterator]: (s: string) => string;
|
||||
[Symbol.toStringTag](s: number): number;
|
||||
}
|
||||
|
||||
var i: I = {
|
||||
[Symbol.iterator]: s => s,
|
||||
[Symbol.toStringTag](n) { return n; }
|
||||
}
|
||||
|
||||
//// [symbolProperty20.js]
|
||||
var i = {
|
||||
[Symbol.iterator]: s => { return s; },
|
||||
[Symbol.toStringTag](n) {
|
||||
return n;
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,37 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty20.ts ===
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.iterator]: (s: string) => string;
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>s : string
|
||||
|
||||
[Symbol.toStringTag](s: number): number;
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
>s : number
|
||||
}
|
||||
|
||||
var i: I = {
|
||||
>i : I
|
||||
>I : I
|
||||
>{ [Symbol.iterator]: s => s, [Symbol.toStringTag](n) { return n; }} : { [Symbol.iterator]: (s: string) => string; [Symbol.toStringTag](n: number): number; }
|
||||
|
||||
[Symbol.iterator]: s => s,
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
>s => s : (s: string) => string
|
||||
>s : string
|
||||
>s : string
|
||||
|
||||
[Symbol.toStringTag](n) { return n; }
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
>n : number
|
||||
>n : number
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [symbolProperty21.ts]
|
||||
interface I<T, U> {
|
||||
[Symbol.unscopables]: T;
|
||||
[Symbol.isConcatSpreadable]: U;
|
||||
}
|
||||
|
||||
declare function foo<T, U>(p: I<T, U>): { t: T; u: U };
|
||||
|
||||
foo({
|
||||
[Symbol.isConcatSpreadable]: "",
|
||||
[Symbol.isRegExp]: 0,
|
||||
[Symbol.unscopables]: true
|
||||
});
|
||||
|
||||
//// [symbolProperty21.js]
|
||||
foo({
|
||||
[Symbol.isConcatSpreadable]: "",
|
||||
[Symbol.isRegExp]: 0,
|
||||
[Symbol.unscopables]: true
|
||||
});
|
||||
@@ -0,0 +1,53 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty21.ts ===
|
||||
interface I<T, U> {
|
||||
>I : I<T, U>
|
||||
>T : T
|
||||
>U : U
|
||||
|
||||
[Symbol.unscopables]: T;
|
||||
>Symbol.unscopables : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>unscopables : Symbol
|
||||
>T : T
|
||||
|
||||
[Symbol.isConcatSpreadable]: U;
|
||||
>Symbol.isConcatSpreadable : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>isConcatSpreadable : Symbol
|
||||
>U : U
|
||||
}
|
||||
|
||||
declare function foo<T, U>(p: I<T, U>): { t: T; u: U };
|
||||
>foo : <T, U>(p: I<T, U>) => { t: T; u: U; }
|
||||
>T : T
|
||||
>U : U
|
||||
>p : I<T, U>
|
||||
>I : I<T, U>
|
||||
>T : T
|
||||
>U : U
|
||||
>t : T
|
||||
>T : T
|
||||
>u : U
|
||||
>U : U
|
||||
|
||||
foo({
|
||||
>foo({ [Symbol.isConcatSpreadable]: "", [Symbol.isRegExp]: 0, [Symbol.unscopables]: true}) : { t: boolean; u: string; }
|
||||
>foo : <T, U>(p: I<T, U>) => { t: T; u: U; }
|
||||
>{ [Symbol.isConcatSpreadable]: "", [Symbol.isRegExp]: 0, [Symbol.unscopables]: true} : { [Symbol.isConcatSpreadable]: string; [Symbol.isRegExp]: number; [Symbol.unscopables]: boolean; }
|
||||
|
||||
[Symbol.isConcatSpreadable]: "",
|
||||
>Symbol.isConcatSpreadable : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>isConcatSpreadable : Symbol
|
||||
|
||||
[Symbol.isRegExp]: 0,
|
||||
>Symbol.isRegExp : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>isRegExp : Symbol
|
||||
|
||||
[Symbol.unscopables]: true
|
||||
>Symbol.unscopables : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>unscopables : Symbol
|
||||
|
||||
});
|
||||
@@ -0,0 +1,11 @@
|
||||
//// [symbolProperty22.ts]
|
||||
interface I<T, U> {
|
||||
[Symbol.unscopables](x: T): U;
|
||||
}
|
||||
|
||||
declare function foo<T, U>(p1: T, p2: I<T, U>): U;
|
||||
|
||||
foo("", { [Symbol.unscopables]: s => s.length });
|
||||
|
||||
//// [symbolProperty22.js]
|
||||
foo("", { [Symbol.unscopables]: s => { return s.length; } });
|
||||
@@ -0,0 +1,40 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty22.ts ===
|
||||
interface I<T, U> {
|
||||
>I : I<T, U>
|
||||
>T : T
|
||||
>U : U
|
||||
|
||||
[Symbol.unscopables](x: T): U;
|
||||
>Symbol.unscopables : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>unscopables : Symbol
|
||||
>x : T
|
||||
>T : T
|
||||
>U : U
|
||||
}
|
||||
|
||||
declare function foo<T, U>(p1: T, p2: I<T, U>): U;
|
||||
>foo : <T, U>(p1: T, p2: I<T, U>) => U
|
||||
>T : T
|
||||
>U : U
|
||||
>p1 : T
|
||||
>T : T
|
||||
>p2 : I<T, U>
|
||||
>I : I<T, U>
|
||||
>T : T
|
||||
>U : U
|
||||
>U : U
|
||||
|
||||
foo("", { [Symbol.unscopables]: s => s.length });
|
||||
>foo("", { [Symbol.unscopables]: s => s.length }) : number
|
||||
>foo : <T, U>(p1: T, p2: I<T, U>) => U
|
||||
>{ [Symbol.unscopables]: s => s.length } : { [Symbol.unscopables]: (s: string) => number; }
|
||||
>Symbol.unscopables : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>unscopables : Symbol
|
||||
>s => s.length : (s: string) => number
|
||||
>s : string
|
||||
>s.length : number
|
||||
>s : string
|
||||
>length : number
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [symbolProperty23.ts]
|
||||
interface I {
|
||||
[Symbol.toPrimitive]: () => boolean;
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
[Symbol.toPrimitive]() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty23.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.toPrimitive] = function () {
|
||||
return true;
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,22 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty23.ts ===
|
||||
interface I {
|
||||
>I : I
|
||||
|
||||
[Symbol.toPrimitive]: () => boolean;
|
||||
>Symbol.toPrimitive : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toPrimitive : Symbol
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
>C : C
|
||||
>I : I
|
||||
|
||||
[Symbol.toPrimitive]() {
|
||||
>Symbol.toPrimitive : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toPrimitive : Symbol
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty24.ts(5,7): error TS2420: Class 'C' incorrectly implements interface 'I'.
|
||||
Types of property '[Symbol.toPrimitive]' are incompatible.
|
||||
Type '() => string' is not assignable to type '() => boolean'.
|
||||
Type 'string' is not assignable to type 'boolean'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty24.ts (1 errors) ====
|
||||
interface I {
|
||||
[Symbol.toPrimitive]: () => boolean;
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
~
|
||||
!!! error TS2420: Class 'C' incorrectly implements interface 'I'.
|
||||
!!! error TS2420: Types of property '[Symbol.toPrimitive]' are incompatible.
|
||||
!!! error TS2420: Type '() => string' is not assignable to type '() => boolean'.
|
||||
!!! error TS2420: Type 'string' is not assignable to type 'boolean'.
|
||||
[Symbol.toPrimitive]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [symbolProperty24.ts]
|
||||
interface I {
|
||||
[Symbol.toPrimitive]: () => boolean;
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
[Symbol.toPrimitive]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty24.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.toPrimitive] = function () {
|
||||
return "";
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,17 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty25.ts(5,7): error TS2420: Class 'C' incorrectly implements interface 'I'.
|
||||
Property '[Symbol.toPrimitive]' is missing in type 'C'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty25.ts (1 errors) ====
|
||||
interface I {
|
||||
[Symbol.toPrimitive]: () => boolean;
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
~
|
||||
!!! error TS2420: Class 'C' incorrectly implements interface 'I'.
|
||||
!!! error TS2420: Property '[Symbol.toPrimitive]' is missing in type 'C'.
|
||||
[Symbol.toStringTag]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [symbolProperty25.ts]
|
||||
interface I {
|
||||
[Symbol.toPrimitive]: () => boolean;
|
||||
}
|
||||
|
||||
class C implements I {
|
||||
[Symbol.toStringTag]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty25.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.toStringTag] = function () {
|
||||
return "";
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,38 @@
|
||||
//// [symbolProperty26.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
class C2 extends C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty26.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return "";
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
var C2 = (function (_super) {
|
||||
__extends(C2, _super);
|
||||
function C2() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
C2.prototype[Symbol.toStringTag] = function () {
|
||||
return "";
|
||||
};
|
||||
return C2;
|
||||
})(C1);
|
||||
@@ -0,0 +1,25 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty26.ts ===
|
||||
class C1 {
|
||||
>C1 : C1
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
class C2 extends C1 {
|
||||
>C2 : C2
|
||||
>C1 : C1
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
//// [symbolProperty27.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
class C2 extends C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty27.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return {};
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
var C2 = (function (_super) {
|
||||
__extends(C2, _super);
|
||||
function C2() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
C2.prototype[Symbol.toStringTag] = function () {
|
||||
return "";
|
||||
};
|
||||
return C2;
|
||||
})(C1);
|
||||
@@ -0,0 +1,26 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty27.ts ===
|
||||
class C1 {
|
||||
>C1 : C1
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return {};
|
||||
>{} : {}
|
||||
}
|
||||
}
|
||||
|
||||
class C2 extends C1 {
|
||||
>C2 : C2
|
||||
>C1 : C1
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
//// [symbolProperty28.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
}
|
||||
|
||||
class C2 extends C1 { }
|
||||
|
||||
var c: C2;
|
||||
var obj = c[Symbol.toStringTag]().x;
|
||||
|
||||
//// [symbolProperty28.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
var C2 = (function (_super) {
|
||||
__extends(C2, _super);
|
||||
function C2() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
return C2;
|
||||
})(C1);
|
||||
var c;
|
||||
var obj = c[Symbol.toStringTag]().x;
|
||||
@@ -0,0 +1,17 @@
|
||||
//// [symbolProperty29.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
[s: Symbol]: () => { x: string };
|
||||
}
|
||||
|
||||
//// [symbolProperty29.js]
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
@@ -0,0 +1,18 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty29.ts ===
|
||||
class C1 {
|
||||
>C1 : C1
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return { x: "" };
|
||||
>{ x: "" } : { x: string; }
|
||||
>x : string
|
||||
}
|
||||
[s: Symbol]: () => { x: string };
|
||||
>s : Symbol
|
||||
>Symbol : Symbol
|
||||
>x : string
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
//// [symbolProperty30.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
[s: Symbol]: () => { x: number };
|
||||
}
|
||||
|
||||
//// [symbolProperty30.js]
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
@@ -0,0 +1,32 @@
|
||||
//// [symbolProperty31.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
}
|
||||
class C2 extends C1 {
|
||||
[s: Symbol]: () => { x: string };
|
||||
}
|
||||
|
||||
//// [symbolProperty31.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
var C2 = (function (_super) {
|
||||
__extends(C2, _super);
|
||||
function C2() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
return C2;
|
||||
})(C1);
|
||||
@@ -0,0 +1,23 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty31.ts ===
|
||||
class C1 {
|
||||
>C1 : C1
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return { x: "" };
|
||||
>{ x: "" } : { x: string; }
|
||||
>x : string
|
||||
}
|
||||
}
|
||||
class C2 extends C1 {
|
||||
>C2 : C2
|
||||
>C1 : C1
|
||||
|
||||
[s: Symbol]: () => { x: string };
|
||||
>s : Symbol
|
||||
>Symbol : Symbol
|
||||
>x : string
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//// [symbolProperty32.ts]
|
||||
class C1 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
}
|
||||
class C2 extends C1 {
|
||||
[s: Symbol]: () => { x: number };
|
||||
}
|
||||
|
||||
//// [symbolProperty32.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function () {
|
||||
function C1() {
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})();
|
||||
var C2 = (function (_super) {
|
||||
__extends(C2, _super);
|
||||
function C2() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
return C2;
|
||||
})(C1);
|
||||
@@ -0,0 +1,32 @@
|
||||
//// [symbolProperty33.ts]
|
||||
class C1 extends C2 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
}
|
||||
class C2 {
|
||||
[s: Symbol]: () => { x: string };
|
||||
}
|
||||
|
||||
//// [symbolProperty33.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function (_super) {
|
||||
__extends(C1, _super);
|
||||
function C1() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})(C2);
|
||||
var C2 = (function () {
|
||||
function C2() {
|
||||
}
|
||||
return C2;
|
||||
})();
|
||||
@@ -0,0 +1,23 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty33.ts ===
|
||||
class C1 extends C2 {
|
||||
>C1 : C1
|
||||
>C2 : C2
|
||||
|
||||
[Symbol.toStringTag]() {
|
||||
>Symbol.toStringTag : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toStringTag : Symbol
|
||||
|
||||
return { x: "" };
|
||||
>{ x: "" } : { x: string; }
|
||||
>x : string
|
||||
}
|
||||
}
|
||||
class C2 {
|
||||
>C2 : C2
|
||||
|
||||
[s: Symbol]: () => { x: string };
|
||||
>s : Symbol
|
||||
>Symbol : Symbol
|
||||
>x : string
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//// [symbolProperty34.ts]
|
||||
class C1 extends C2 {
|
||||
[Symbol.toStringTag]() {
|
||||
return { x: "" };
|
||||
}
|
||||
}
|
||||
class C2 {
|
||||
[s: Symbol]: () => { x: number };
|
||||
}
|
||||
|
||||
//// [symbolProperty34.js]
|
||||
var __extends = this.__extends || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
__.prototype = b.prototype;
|
||||
d.prototype = new __();
|
||||
};
|
||||
var C1 = (function (_super) {
|
||||
__extends(C1, _super);
|
||||
function C1() {
|
||||
_super.apply(this, arguments);
|
||||
}
|
||||
C1.prototype[Symbol.toStringTag] = function () {
|
||||
return { x: "" };
|
||||
};
|
||||
return C1;
|
||||
})(C2);
|
||||
var C2 = (function () {
|
||||
function C2() {
|
||||
}
|
||||
return C2;
|
||||
})();
|
||||
@@ -0,0 +1,11 @@
|
||||
//// [symbolProperty35.ts]
|
||||
interface I1 {
|
||||
[Symbol.toStringTag](): { x: string }
|
||||
}
|
||||
interface I2 {
|
||||
[Symbol.toStringTag](): { x: number }
|
||||
}
|
||||
|
||||
interface I3 extends I1, I2 { }
|
||||
|
||||
//// [symbolProperty35.js]
|
||||
@@ -0,0 +1,13 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty36.ts(2,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty36.ts(3,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty36.ts (2 errors) ====
|
||||
var x = {
|
||||
[Symbol.isConcatSpreadable]: 0,
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
[Symbol.isConcatSpreadable]: 1
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
//// [symbolProperty36.ts]
|
||||
var x = {
|
||||
[Symbol.isConcatSpreadable]: 0,
|
||||
[Symbol.isConcatSpreadable]: 1
|
||||
}
|
||||
|
||||
//// [symbolProperty36.js]
|
||||
var x = {
|
||||
[Symbol.isConcatSpreadable]: 0,
|
||||
[Symbol.isConcatSpreadable]: 1
|
||||
};
|
||||
@@ -0,0 +1,13 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty37.ts(2,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty37.ts(3,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty37.ts (2 errors) ====
|
||||
interface I {
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
//// [symbolProperty37.ts]
|
||||
interface I {
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
}
|
||||
|
||||
//// [symbolProperty37.js]
|
||||
@@ -0,0 +1,15 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty38.ts(2,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty38.ts(5,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty38.ts (2 errors) ====
|
||||
interface I {
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
}
|
||||
interface I {
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'.
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
//// [symbolProperty38.ts]
|
||||
interface I {
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
}
|
||||
interface I {
|
||||
[Symbol.isConcatSpreadable]: string;
|
||||
}
|
||||
|
||||
//// [symbolProperty38.js]
|
||||
@@ -0,0 +1,25 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty39.ts(2,5): error TS2393: Duplicate function implementation.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty39.ts(3,5): error TS2393: Duplicate function implementation.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty39.ts(4,5): error TS2393: Duplicate function implementation.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty39.ts(7,5): error TS2393: Duplicate function implementation.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty39.ts (4 errors) ====
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2393: Duplicate function implementation.
|
||||
[Symbol.iterator](x: number): number;
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2393: Duplicate function implementation.
|
||||
[Symbol.iterator](x: any) {
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2393: Duplicate function implementation.
|
||||
return undefined;
|
||||
}
|
||||
[Symbol.iterator](x: any) {
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2393: Duplicate function implementation.
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
//// [symbolProperty39.ts]
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
[Symbol.iterator](x: number): number;
|
||||
[Symbol.iterator](x: any) {
|
||||
return undefined;
|
||||
}
|
||||
[Symbol.iterator](x: any) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty39.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function (x) {
|
||||
return undefined;
|
||||
};
|
||||
C.prototype[Symbol.iterator] = function (x) {
|
||||
return undefined;
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,26 @@
|
||||
//// [symbolProperty40.ts]
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
[Symbol.iterator](x: number): number;
|
||||
[Symbol.iterator](x: any) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var c = new C;
|
||||
c[Symbol.iterator]("");
|
||||
c[Symbol.iterator](0);
|
||||
|
||||
|
||||
//// [symbolProperty40.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function (x) {
|
||||
return undefined;
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
var c = new C;
|
||||
c[Symbol.iterator]("");
|
||||
c[Symbol.iterator](0);
|
||||
@@ -0,0 +1,26 @@
|
||||
//// [symbolProperty41.ts]
|
||||
class C {
|
||||
[Symbol.iterator](x: string): { x: string };
|
||||
[Symbol.iterator](x: "hello"): { x: string; hello: string };
|
||||
[Symbol.iterator](x: any) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
var c = new C;
|
||||
c[Symbol.iterator]("");
|
||||
c[Symbol.iterator]("hello");
|
||||
|
||||
|
||||
//// [symbolProperty41.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function (x) {
|
||||
return undefined;
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
var c = new C;
|
||||
c[Symbol.iterator]("");
|
||||
c[Symbol.iterator]("hello");
|
||||
@@ -0,0 +1,16 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty42.ts(3,12): error TS2388: Function overload must not be static.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty42.ts(4,5): error TS2387: Function overload must be static.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty42.ts (2 errors) ====
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
static [Symbol.iterator](x: number): number;
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2388: Function overload must not be static.
|
||||
[Symbol.iterator](x: any) {
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2387: Function overload must be static.
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
//// [symbolProperty42.ts]
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
static [Symbol.iterator](x: number): number;
|
||||
[Symbol.iterator](x: any) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty42.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function (x) {
|
||||
return undefined;
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,10 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty43.ts(3,5): error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty43.ts (1 errors) ====
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
[Symbol.iterator](x: number): number;
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
//// [symbolProperty43.ts]
|
||||
class C {
|
||||
[Symbol.iterator](x: string): string;
|
||||
[Symbol.iterator](x: number): number;
|
||||
}
|
||||
|
||||
//// [symbolProperty43.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,17 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty44.ts(2,9): error TS2300: Duplicate identifier '[Symbol.hasInstance]'.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty44.ts(5,9): error TS2300: Duplicate identifier '[Symbol.hasInstance]'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty44.ts (2 errors) ====
|
||||
class C {
|
||||
get [Symbol.hasInstance]() {
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.hasInstance]'.
|
||||
return "";
|
||||
}
|
||||
get [Symbol.hasInstance]() {
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
!!! error TS2300: Duplicate identifier '[Symbol.hasInstance]'.
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
//// [symbolProperty44.ts]
|
||||
class C {
|
||||
get [Symbol.hasInstance]() {
|
||||
return "";
|
||||
}
|
||||
get [Symbol.hasInstance]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty44.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
get: function () {
|
||||
return "";
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
get: function () {
|
||||
return "";
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,30 @@
|
||||
//// [symbolProperty45.ts]
|
||||
class C {
|
||||
get [Symbol.hasInstance]() {
|
||||
return "";
|
||||
}
|
||||
get [Symbol.toPrimitive]() {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty45.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
get: function () {
|
||||
return "";
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(C.prototype, Symbol.toPrimitive, {
|
||||
get: function () {
|
||||
return "";
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
return C;
|
||||
})();
|
||||
@@ -0,0 +1,19 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty45.ts ===
|
||||
class C {
|
||||
>C : C
|
||||
|
||||
get [Symbol.hasInstance]() {
|
||||
>Symbol.hasInstance : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>hasInstance : Symbol
|
||||
|
||||
return "";
|
||||
}
|
||||
get [Symbol.toPrimitive]() {
|
||||
>Symbol.toPrimitive : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>toPrimitive : Symbol
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
//// [symbolProperty46.ts]
|
||||
class C {
|
||||
get [Symbol.hasInstance]() {
|
||||
return "";
|
||||
}
|
||||
// Should take a string
|
||||
set [Symbol.hasInstance](x) {
|
||||
}
|
||||
}
|
||||
|
||||
(new C)[Symbol.hasInstance] = 0;
|
||||
(new C)[Symbol.hasInstance] = "";
|
||||
|
||||
//// [symbolProperty46.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
get: function () {
|
||||
return "";
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
// Should take a string
|
||||
set: function (x) {
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
return C;
|
||||
})();
|
||||
(new C)[Symbol.hasInstance] = 0;
|
||||
(new C)[Symbol.hasInstance] = "";
|
||||
@@ -0,0 +1,17 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty47.ts(3,16): error TS2322: Type 'string' is not assignable to type 'number'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty47.ts (1 errors) ====
|
||||
class C {
|
||||
get [Symbol.hasInstance]() {
|
||||
return "";
|
||||
~~
|
||||
!!! error TS2322: Type 'string' is not assignable to type 'number'.
|
||||
}
|
||||
// Should take a string
|
||||
set [Symbol.hasInstance](x: number) {
|
||||
}
|
||||
}
|
||||
|
||||
(new C)[Symbol.hasInstance] = 0;
|
||||
(new C)[Symbol.hasInstance] = "";
|
||||
@@ -0,0 +1,35 @@
|
||||
//// [symbolProperty47.ts]
|
||||
class C {
|
||||
get [Symbol.hasInstance]() {
|
||||
return "";
|
||||
}
|
||||
// Should take a string
|
||||
set [Symbol.hasInstance](x: number) {
|
||||
}
|
||||
}
|
||||
|
||||
(new C)[Symbol.hasInstance] = 0;
|
||||
(new C)[Symbol.hasInstance] = "";
|
||||
|
||||
//// [symbolProperty47.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
get: function () {
|
||||
return "";
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(C.prototype, Symbol.hasInstance, {
|
||||
// Should take a string
|
||||
set: function (x) {
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
return C;
|
||||
})();
|
||||
(new C)[Symbol.hasInstance] = 0;
|
||||
(new C)[Symbol.hasInstance] = "";
|
||||
@@ -0,0 +1,21 @@
|
||||
//// [symbolProperty48.ts]
|
||||
module M {
|
||||
var Symbol;
|
||||
|
||||
class C {
|
||||
[Symbol.iterator]() { }
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty48.js]
|
||||
var M;
|
||||
(function (M) {
|
||||
var Symbol;
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function () {
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
})(M || (M = {}));
|
||||
@@ -0,0 +1,21 @@
|
||||
//// [symbolProperty49.ts]
|
||||
module M {
|
||||
export var Symbol;
|
||||
|
||||
class C {
|
||||
[Symbol.iterator]() { }
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty49.js]
|
||||
var M;
|
||||
(function (M) {
|
||||
M.Symbol;
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[M.Symbol.iterator] = function () {
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
})(M || (M = {}));
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [symbolProperty50.ts]
|
||||
module M {
|
||||
interface Symbol { }
|
||||
|
||||
class C {
|
||||
[Symbol.iterator]() { }
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty50.js]
|
||||
var M;
|
||||
(function (M) {
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function () {
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
})(M || (M = {}));
|
||||
@@ -0,0 +1,16 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty50.ts ===
|
||||
module M {
|
||||
>M : typeof M
|
||||
|
||||
interface Symbol { }
|
||||
>Symbol : Symbol
|
||||
|
||||
class C {
|
||||
>C : C
|
||||
|
||||
[Symbol.iterator]() { }
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
//// [symbolProperty51.ts]
|
||||
module M {
|
||||
module Symbol { }
|
||||
|
||||
class C {
|
||||
[Symbol.iterator]() { }
|
||||
}
|
||||
}
|
||||
|
||||
//// [symbolProperty51.js]
|
||||
var M;
|
||||
(function (M) {
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
C.prototype[Symbol.iterator] = function () {
|
||||
};
|
||||
return C;
|
||||
})();
|
||||
})(M || (M = {}));
|
||||
@@ -0,0 +1,16 @@
|
||||
=== tests/cases/conformance/es6/Symbols/symbolProperty51.ts ===
|
||||
module M {
|
||||
>M : typeof M
|
||||
|
||||
module Symbol { }
|
||||
>Symbol : unknown
|
||||
|
||||
class C {
|
||||
>C : C
|
||||
|
||||
[Symbol.iterator]() { }
|
||||
>Symbol.iterator : Symbol
|
||||
>Symbol : SymbolConstructor
|
||||
>iterator : Symbol
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty52.ts(2,13): error TS2339: Property 'nonsense' does not exist on type 'SymbolConstructor'.
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty52.ts(5,1): error TS2322: Type '{}' is not assignable to type '{ [Symbol.nonsense]: number; }'.
|
||||
Property '[Symbol.nonsense]' is missing in type '{}'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty52.ts (2 errors) ====
|
||||
var obj = {
|
||||
[Symbol.nonsense]: 0
|
||||
~~~~~~~~
|
||||
!!! error TS2339: Property 'nonsense' does not exist on type 'SymbolConstructor'.
|
||||
};
|
||||
|
||||
obj = {};
|
||||
~~~
|
||||
!!! error TS2322: Type '{}' is not assignable to type '{ [Symbol.nonsense]: number; }'.
|
||||
!!! error TS2322: Property '[Symbol.nonsense]' is missing in type '{}'.
|
||||
@@ -0,0 +1,12 @@
|
||||
//// [symbolProperty52.ts]
|
||||
var obj = {
|
||||
[Symbol.nonsense]: 0
|
||||
};
|
||||
|
||||
obj = {};
|
||||
|
||||
//// [symbolProperty52.js]
|
||||
var obj = {
|
||||
[Symbol.nonsense]: 0
|
||||
};
|
||||
obj = {};
|
||||
@@ -0,0 +1,9 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty53.ts(2,5): error TS2464: A computed property name must be of type 'string', 'number', 'Symbol', or 'any'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty53.ts (1 errors) ====
|
||||
var obj = {
|
||||
[Symbol.for]: 0
|
||||
~~~~~~~~~~~~
|
||||
!!! error TS2464: A computed property name must be of type 'string', 'number', 'Symbol', or 'any'.
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
//// [symbolProperty53.ts]
|
||||
var obj = {
|
||||
[Symbol.for]: 0
|
||||
};
|
||||
|
||||
//// [symbolProperty53.js]
|
||||
var obj = {
|
||||
[Symbol.for]: 0
|
||||
};
|
||||
@@ -0,0 +1,9 @@
|
||||
//// [symbolProperty54.ts]
|
||||
var obj = {
|
||||
[Symbol.prototype]: 0
|
||||
};
|
||||
|
||||
//// [symbolProperty54.js]
|
||||
var obj = {
|
||||
[Symbol.prototype]: 0
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
tests/cases/conformance/es6/Symbols/symbolProperty9.ts(10,5): error TS2322: Type 'I' is not assignable to type 'C'.
|
||||
Types of property '[Symbol.iterator]' are incompatible.
|
||||
Type '{ x: any; }' is not assignable to type '{ x: any; y: any; }'.
|
||||
Property 'y' is missing in type '{ x: any; }'.
|
||||
|
||||
|
||||
==== tests/cases/conformance/es6/Symbols/symbolProperty9.ts (1 errors) ====
|
||||
class C {
|
||||
[Symbol.iterator]: { x; y };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
var c: C = i;
|
||||
~
|
||||
!!! error TS2322: Type 'I' is not assignable to type 'C'.
|
||||
!!! error TS2322: Types of property '[Symbol.iterator]' are incompatible.
|
||||
!!! error TS2322: Type '{ x: any; }' is not assignable to type '{ x: any; y: any; }'.
|
||||
!!! error TS2322: Property 'y' is missing in type '{ x: any; }'.
|
||||
@@ -0,0 +1,21 @@
|
||||
//// [symbolProperty9.ts]
|
||||
class C {
|
||||
[Symbol.iterator]: { x; y };
|
||||
}
|
||||
interface I {
|
||||
[Symbol.iterator]: { x };
|
||||
}
|
||||
|
||||
var i: I;
|
||||
i = new C;
|
||||
var c: C = i;
|
||||
|
||||
//// [symbolProperty9.js]
|
||||
var C = (function () {
|
||||
function C() {
|
||||
}
|
||||
return C;
|
||||
})();
|
||||
var i;
|
||||
i = new C;
|
||||
var c = i;
|
||||
Reference in New Issue
Block a user