TypeScript/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.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

157 lines
3.1 KiB
Plaintext

=== tests/cases/compiler/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.ts ===
// All will be error from using ES6 features but only include ES5 library
// Using Es6 array
function f(x: number, y: number, z: number) {
>f : (x: number, y: number, z: number) => any
>x : number
>y : number
>z : number
return Array.from(arguments);
>Array.from(arguments) : any
>Array.from : any
>Array : ArrayConstructor
>from : any
>arguments : IArguments
}
f(1, 2, 3); // no error
>f(1, 2, 3) : any
>f : (x: number, y: number, z: number) => any
>1 : 1
>2 : 2
>3 : 3
// Using ES6 collection
var m = new Map<string, number>();
>m : any
>new Map<string, number>() : any
>Map : any
m.clear();
>m.clear() : any
>m.clear : any
>m : any
>clear : any
// Using ES6 iterable
m.keys();
>m.keys() : any
>m.keys : any
>m : any
>keys : any
// Using ES6 function
function Baz() { }
>Baz : () => void
Baz.name;
>Baz.name : any
>Baz : () => void
>name : any
// Using ES6 math
Math.sign(1);
>Math.sign(1) : any
>Math.sign : any
>Math : Math
>sign : any
>1 : 1
// Using ES6 object
var o = {
>o : { [x: number]: (value: any) => boolean; a: number; }
>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { [x: number]: (value: any) => boolean; a: number; }
a: 2,
>a : number
>2 : 2
[Symbol.hasInstance](value: any) {
>[Symbol.hasInstance] : (value: any) => boolean
>Symbol.hasInstance : any
>Symbol : any
>hasInstance : any
>value : any
return false;
>false : false
}
};
o.hasOwnProperty(Symbol.hasInstance);
>o.hasOwnProperty(Symbol.hasInstance) : boolean
>o.hasOwnProperty : (v: PropertyKey) => boolean
>o : { [x: number]: (value: any) => boolean; a: number; }
>hasOwnProperty : (v: PropertyKey) => boolean
>Symbol.hasInstance : any
>Symbol : any
>hasInstance : any
// Using Es6 proxy
var t = {}
>t : {}
>{} : {}
var p = new Proxy(t, {});
>p : any
>new Proxy(t, {}) : any
>Proxy : any
>t : {}
>{} : {}
// Using ES6 reflect
Reflect.isExtensible({});
>Reflect.isExtensible({}) : any
>Reflect.isExtensible : any
>Reflect : any
>isExtensible : any
>{} : {}
// Using Es6 regexp
var reg = new RegExp("/s");
>reg : RegExp
>new RegExp("/s") : RegExp
>RegExp : RegExpConstructor
>"/s" : "/s"
reg.flags;
>reg.flags : any
>reg : RegExp
>flags : any
// Using ES6 string
var str = "Hello world";
>str : string
>"Hello world" : "Hello world"
str.includes("hello", 0);
>str.includes("hello", 0) : any
>str.includes : any
>str : string
>includes : any
>"hello" : "hello"
>0 : 0
// Using ES6 symbol
var s = Symbol();
>s : any
>Symbol() : any
>Symbol : any
// Using ES6 wellknown-symbol
const o1 = {
>o1 : { [x: number]: (value: any) => boolean; }
>{ [Symbol.hasInstance](value: any) { return false; }} : { [x: number]: (value: any) => boolean; }
[Symbol.hasInstance](value: any) {
>[Symbol.hasInstance] : (value: any) => boolean
>Symbol.hasInstance : any
>Symbol : any
>hasInstance : any
>value : any
return false;
>false : false
}
}