Accept correct baselines for symbol property tests

This commit is contained in:
Jason Freeman
2015-02-06 21:31:58 -08:00
parent 779661c8da
commit 95af9978e1
78 changed files with 1830 additions and 0 deletions
@@ -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;