TypeScript/tests/baselines/reference/symbolProperty56.types
Wesley Wigham 87d10eb055
Eliminate well known symbols as a concept in the checker and rely on unique symbols (#42543)
* Eliminate well-known symbols in the checker: 2021 edition

* Actually update the lib text to say unique symbol, too (this is unneeded with compat code in place, but this makes goto-def make more sense)

* Add test showing mismatched symbol constructor type interop

* Add more test cases for some other related issues this fixes

* Revert computed name change

* Style comments
2021-02-22 14:43:28 -08:00

30 lines
820 B
Plaintext

=== tests/cases/conformance/es6/Symbols/symbolProperty56.ts ===
var obj = {
>obj : { [Symbol.iterator]: number; }
>{ [Symbol.iterator]: 0} : { [Symbol.iterator]: number; }
[Symbol.iterator]: 0
>[Symbol.iterator] : number
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
>0 : 0
};
module M {
>M : typeof M
var Symbol: {};
>Symbol : {}
// The following should be of type 'any'. This is because even though obj has a property keyed by Symbol.iterator,
// the key passed in here is the *wrong* Symbol.iterator. It is not the iterator property of the global Symbol.
obj[Symbol["iterator"]];
>obj[Symbol["iterator"]] : error
>obj : { [Symbol.iterator]: number; }
>Symbol["iterator"] : error
>Symbol : {}
>"iterator" : "iterator"
}