Implement ergonomic brand checks for private fields (#1177)

This commit is contained in:
Evan Wallace
2021-04-22 04:12:50 -07:00
committed by GitHub
parent 31dd4a7a32
commit f392a14fd0
12 changed files with 214 additions and 4 deletions

View File

@@ -218,6 +218,10 @@ func code(isES6 bool) string {
var __accessCheck = (obj, member, msg) => {
if (!member.has(obj)) throw TypeError('Cannot ' + msg)
}
export var __privateIn = (member, obj) => {
if (Object(obj) !== obj) throw TypeError('Cannot use the "in" operator on this value')
return member.has(obj)
}
export var __privateGet = (obj, member, getter) => {
__accessCheck(obj, member, 'read from private field')
return getter ? getter.call(obj) : member.get(obj)