Skip to content

Commit bd49b81

Browse files
committed
Add test showing mismatched symbol constructor type interop
1 parent a3fc74e commit bd49b81

4 files changed

+86
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//// [symbolObserverMismatchingPolyfillsWorkTogether.ts]
2+
interface SymbolConstructor {
3+
readonly observer: symbol;
4+
}
5+
interface SymbolConstructor {
6+
readonly observer: unique symbol;
7+
}
8+
9+
const obj = {
10+
[Symbol.observer]: 0
11+
};
12+
13+
//// [symbolObserverMismatchingPolyfillsWorkTogether.js]
14+
const obj = {
15+
[Symbol.observer]: 0
16+
};
17+
18+
19+
//// [symbolObserverMismatchingPolyfillsWorkTogether.d.ts]
20+
interface SymbolConstructor {
21+
readonly observer: symbol;
22+
}
23+
interface SymbolConstructor {
24+
readonly observer: unique symbol;
25+
}
26+
declare const obj: {
27+
[Symbol.observer]: number;
28+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
=== tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts ===
2+
interface SymbolConstructor {
3+
>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 0), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 2, 1))
4+
5+
readonly observer: symbol;
6+
>observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29))
7+
}
8+
interface SymbolConstructor {
9+
>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 0), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 2, 1))
10+
11+
readonly observer: unique symbol;
12+
>observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29))
13+
}
14+
15+
const obj = {
16+
>obj : Symbol(obj, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 7, 5))
17+
18+
[Symbol.observer]: 0
19+
>[Symbol.observer] : Symbol([Symbol.observer], Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 7, 13))
20+
>Symbol.observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29))
21+
>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --))
22+
>observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29))
23+
24+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
=== tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts ===
2+
interface SymbolConstructor {
3+
readonly observer: symbol;
4+
>observer : unique symbol
5+
}
6+
interface SymbolConstructor {
7+
readonly observer: unique symbol;
8+
>observer : unique symbol
9+
}
10+
11+
const obj = {
12+
>obj : { [Symbol.observer]: number; }
13+
>{ [Symbol.observer]: 0} : { [Symbol.observer]: number; }
14+
15+
[Symbol.observer]: 0
16+
>[Symbol.observer] : number
17+
>Symbol.observer : unique symbol
18+
>Symbol : SymbolConstructor
19+
>observer : unique symbol
20+
>0 : 0
21+
22+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// @declaration: true
2+
// @target: es6
3+
interface SymbolConstructor {
4+
readonly observer: symbol;
5+
}
6+
interface SymbolConstructor {
7+
readonly observer: unique symbol;
8+
}
9+
10+
const obj = {
11+
[Symbol.observer]: 0
12+
};

0 commit comments

Comments
 (0)