Skip to content

Commit 779661c

Browse files
committed
Add tests for symbol properties
1 parent b60fa14 commit 779661c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+443
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@target: ES6
2+
class C {
3+
[Symbol.iterator]: { x; y };
4+
}
5+
interface I {
6+
[Symbol.iterator]?: { x };
7+
}
8+
9+
var i: I;
10+
i = new C;
11+
var c: C = i;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
class C { }
3+
interface I {
4+
[Symbol.iterator]?: { x };
5+
}
6+
7+
var i: I;
8+
i = new C;
9+
var c: C = i;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@target: ES6
2+
class C {
3+
private [Symbol.iterator]: { x };
4+
}
5+
interface I {
6+
[Symbol.iterator]: { x };
7+
}
8+
9+
var i: I;
10+
i = new C;
11+
var c: C = i;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//@target: ES6
2+
class C {
3+
[Symbol.iterator]: { x; y };
4+
}
5+
interface I {
6+
[Symbol.iterator]: { x };
7+
}
8+
9+
declare function foo(i: I): I;
10+
declare function foo(a: any): any;
11+
12+
declare function bar(i: C): C;
13+
declare function bar(a: any): any;
14+
15+
foo(new C);
16+
var i: I;
17+
bar(i);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//@target: ES6
2+
class C {
3+
[Symbol.iterator]: { x; y };
4+
}
5+
interface I {
6+
[Symbol.iterator]?: { x };
7+
}
8+
9+
declare function foo(i: I): I;
10+
declare function foo(a: any): any;
11+
12+
declare function bar(i: C): C;
13+
declare function bar(a: any): any;
14+
15+
foo(new C);
16+
var i: I;
17+
bar(i);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//@target: ES6
2+
class C { }
3+
interface I {
4+
[Symbol.iterator]?: { x };
5+
}
6+
7+
declare function foo(i: I): I;
8+
declare function foo(a: any): any;
9+
10+
declare function bar(i: C): C;
11+
declare function bar(a: any): any;
12+
13+
foo(new C);
14+
var i: I;
15+
bar(i);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
//@target: ES6
2+
class C {
3+
private [Symbol.iterator]: { x };
4+
}
5+
interface I {
6+
[Symbol.iterator]: { x };
7+
}
8+
9+
declare function foo(i: I): I;
10+
declare function foo(a: any): any;
11+
12+
declare function bar(i: C): C;
13+
declare function bar(a: any): any;
14+
15+
foo(new C);
16+
var i: I;
17+
bar(i);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.iterator]: number;
4+
[s: Symbol]: string;
5+
"__@iterator": string;
6+
}
7+
8+
var i: I;
9+
var it = i[Symbol.iterator];
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@target: ES6
2+
var i = {
3+
[Symbol.iterator]: 0,
4+
[Symbol.toStringTag]() { return "" },
5+
set [Symbol.toPrimitive](p: boolean) { }
6+
}
7+
8+
var it = i[Symbol.iterator];
9+
var str = i[Symbol.toStringTag]();
10+
i[Symbol.toPrimitive] = false;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//@target: ES6
2+
var i = {
3+
[Symbol.iterator]: { p: null },
4+
[Symbol.toStringTag]() { return { p: undefined }; }
5+
}
6+
7+
var it = i[Symbol.iterator];
8+
var str = i[Symbol.toStringTag]();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.iterator]: (s: string) => string;
4+
[Symbol.toStringTag](s: number): number;
5+
}
6+
7+
var i: I = {
8+
[Symbol.iterator]: s => s,
9+
[Symbol.toStringTag](n) { return n; }
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//@target: ES6
2+
interface I<T, U> {
3+
[Symbol.unscopables]: T;
4+
[Symbol.isConcatSpreadable]: U;
5+
}
6+
7+
declare function foo<T, U>(p: I<T, U>): { t: T; u: U };
8+
9+
foo({
10+
[Symbol.isConcatSpreadable]: "",
11+
[Symbol.isRegExp]: 0,
12+
[Symbol.unscopables]: true
13+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//@target: ES6
2+
interface I<T, U> {
3+
[Symbol.unscopables](x: T): U;
4+
}
5+
6+
declare function foo<T, U>(p1: T, p2: I<T, U>): U;
7+
8+
foo("", { [Symbol.unscopables]: s => s.length });
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.toPrimitive]: () => boolean;
4+
}
5+
6+
class C implements I {
7+
[Symbol.toPrimitive]() {
8+
return true;
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.toPrimitive]: () => boolean;
4+
}
5+
6+
class C implements I {
7+
[Symbol.toPrimitive]() {
8+
return "";
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.toPrimitive]: () => boolean;
4+
}
5+
6+
class C implements I {
7+
[Symbol.toStringTag]() {
8+
return "";
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return "";
5+
}
6+
}
7+
8+
class C2 extends C1 {
9+
[Symbol.toStringTag]() {
10+
return "";
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return {};
5+
}
6+
}
7+
8+
class C2 extends C1 {
9+
[Symbol.toStringTag]() {
10+
return "";
11+
}
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
}
7+
8+
class C2 extends C1 { }
9+
10+
var c: C2;
11+
var obj = c[Symbol.toStringTag]().x;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
[s: Symbol]: () => { x: string };
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
[s: Symbol]: () => { x: number };
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
}
7+
class C2 extends C1 {
8+
[s: Symbol]: () => { x: string };
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
class C1 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
}
7+
class C2 extends C1 {
8+
[s: Symbol]: () => { x: number };
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
class C1 extends C2 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
}
7+
class C2 {
8+
[s: Symbol]: () => { x: string };
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
class C1 extends C2 {
3+
[Symbol.toStringTag]() {
4+
return { x: "" };
5+
}
6+
}
7+
class C2 {
8+
[s: Symbol]: () => { x: number };
9+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//@target: ES6
2+
interface I1 {
3+
[Symbol.toStringTag](): { x: string }
4+
}
5+
interface I2 {
6+
[Symbol.toStringTag](): { x: number }
7+
}
8+
9+
interface I3 extends I1, I2 { }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
//@target: ES6
2+
var x = {
3+
[Symbol.isConcatSpreadable]: 0,
4+
[Symbol.isConcatSpreadable]: 1
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.isConcatSpreadable]: string;
4+
[Symbol.isConcatSpreadable]: string;
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
//@target: ES6
2+
interface I {
3+
[Symbol.isConcatSpreadable]: string;
4+
}
5+
interface I {
6+
[Symbol.isConcatSpreadable]: string;
7+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@target: ES6
2+
class C {
3+
[Symbol.iterator](x: string): string;
4+
[Symbol.iterator](x: number): number;
5+
[Symbol.iterator](x: any) {
6+
return undefined;
7+
}
8+
[Symbol.iterator](x: any) {
9+
return undefined;
10+
}
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//@target: ES6
2+
class C {
3+
[Symbol.iterator](x: string): string;
4+
[Symbol.iterator](x: number): number;
5+
[Symbol.iterator](x: any) {
6+
return undefined;
7+
}
8+
}
9+
10+
var c = new C;
11+
c[Symbol.iterator]("");
12+
c[Symbol.iterator](0);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//@target: ES6
2+
class C {
3+
[Symbol.iterator](x: string): { x: string };
4+
[Symbol.iterator](x: "hello"): { x: string; hello: string };
5+
[Symbol.iterator](x: any) {
6+
return undefined;
7+
}
8+
}
9+
10+
var c = new C;
11+
c[Symbol.iterator]("");
12+
c[Symbol.iterator]("hello");

0 commit comments

Comments
 (0)