Skip to content

Commit 3fd6d0b

Browse files
committed
add Reflect[@@toStringTag]
tc39/ecma262#2057
1 parent 7fad6ac commit 3fd6d0b

File tree

16 files changed

+43
-0
lines changed

16 files changed

+43
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
##### Unreleased
33
- `String#replaceAll` moved to the stable ES, [per June TC39 meeting](https://github.com/tc39/notes/blob/master/meetings/2020-06/june-2.md#stringprototypereplaceall-for-stage-4)
44
- `Promise.any` and `AggregateError` moved to the stable ES, [per July TC39 meeting](https://github.com/tc39/notes/blob/master/meetings/2020-07/july-21.md#promiseany--aggregateerror-for-stage-4)
5+
- Added `Reflect[@@toStringTag]`, [per July TC39 meeting](https://github.com/tc39/ecma262/pull/2057)
56
- Following the changes in [the `upsert` proposal](https://github.com/tc39/proposal-upsert), `{ Map, WeakMap }#emplace` replace `{ Map, WeakMap }#upsert`, these obsolete methods will be removed in the next major release
67
- [By the current spec](https://tc39.es/ecma262/#sec-aggregate-error-constructor), `AggregateError#errors` is own data property
78
- Added correct iteration closing in the iteration helpers according to the current version of [the proposal](https://tc39.es/proposal-iterator-helpers)

packages/core-js-compat/src/data.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -812,6 +812,11 @@ const data = {
812812
firefox: '42',
813813
safari: '10.0',
814814
},
815+
'es.reflect.to-string-tag': {
816+
chrome: '86',
817+
firefox: '82',
818+
safari: '14.0',
819+
},
815820
'es.regexp.constructor': {
816821
chrome: '51',
817822
firefox: '49',

packages/core-js-compat/src/modules-by-versions.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ module.exports = {
5959
3.7: [
6060
'es.aggregate-error',
6161
'es.promise.any',
62+
'es.reflect.to-string-tag',
6263
'es.string.replace-all',
6364
'esnext.map.emplace',
6465
'esnext.weak-map.emplace',
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// empty
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
// empty

packages/core-js/es/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ require('../modules/es.reflect.own-keys');
208208
require('../modules/es.reflect.prevent-extensions');
209209
require('../modules/es.reflect.set');
210210
require('../modules/es.reflect.set-prototype-of');
211+
require('../modules/es.reflect.to-string-tag');
211212
var path = require('../internals/path');
212213

213214
module.exports = path;

packages/core-js/es/reflect/index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ require('../../modules/es.reflect.own-keys');
1111
require('../../modules/es.reflect.prevent-extensions');
1212
require('../../modules/es.reflect.set');
1313
require('../../modules/es.reflect.set-prototype-of');
14+
require('../../modules/es.reflect.to-string-tag');
1415
var path = require('../../internals/path');
1516

1617
module.exports = path.Reflect;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
require('../../modules/es.reflect.to-string-tag');
2+
3+
module.exports = 'Reflect';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
require('../../modules/es.reflect.to-string-tag');
2+
3+
module.exports = 'Reflect';
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
var $ = require('../internals/export');
2+
var global = require('../internals/global');
3+
var setToStringTag = require('../internals/set-to-string-tag');
4+
5+
$({ global: true }, { Reflect: {} });
6+
7+
// Reflect[@@toStringTag] property
8+
// https://tc39.es/ecma262/#sec-reflect-@@tostringtag
9+
setToStringTag(global.Reflect, 'Reflect', true);
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
require('../../modules/es.reflect.to-string-tag');
2+
3+
module.exports = 'Reflect';

tests/commonjs.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ for (const _PATH of ['../packages/core-js-pure', '../packages/core-js']) {
185185
ok(load('features/reflect/prevent-extensions')({}));
186186
ok(load('features/reflect/set')({}, 'a', 42));
187187
load('features/reflect/set-prototype-of')(O = {}, []);
188+
ok(load('features/reflect/to-string-tag') === 'Reflect');
188189
ok(O instanceof Array);
189190
ok(typeof load('features/reflect/define-metadata') === 'function');
190191
ok(typeof load('features/reflect/delete-metadata') === 'function');
@@ -560,6 +561,7 @@ for (const _PATH of ['../packages/core-js-pure', '../packages/core-js']) {
560561
ok(load('stable/reflect/prevent-extensions')({}));
561562
ok(load('stable/reflect/set')({}, 'a', 42));
562563
load('stable/reflect/set-prototype-of')(O = {}, []);
564+
ok(load('stable/reflect/to-string-tag') === 'Reflect');
563565
ok(O instanceof Array);
564566
ok('has' in load('stable/reflect'));
565567
ok(load('stable/string/from-code-point')(97) === 'a');
@@ -832,6 +834,7 @@ for (const _PATH of ['../packages/core-js-pure', '../packages/core-js']) {
832834
ok(load('es/reflect/prevent-extensions')({}));
833835
ok(load('es/reflect/set')({}, 'a', 42));
834836
load('es/reflect/set-prototype-of')(O = {}, []);
837+
ok(load('es/reflect/to-string-tag') === 'Reflect');
835838
ok(O instanceof Array);
836839
ok('has' in load('es/reflect'));
837840
ok(load('es/string/from-code-point')(97) === 'a');

tests/compat/tests.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -755,6 +755,9 @@ GLOBAL.tests = {
755755
'es.reflect.set-prototype-of': function () {
756756
return Reflect.setPrototypeOf;
757757
},
758+
'es.reflect.to-string-tag': function () {
759+
return Reflect[Symbol.toStringTag];
760+
},
758761
'es.regexp.constructor': function () {
759762
var re1 = /a/g;
760763
var re2 = /a/g;

tests/tests/es.math.to-string-tag.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
QUnit.test('Math[@@toStringTag]', assert => {
2+
assert.strictEqual(Math[Symbol.toStringTag], 'Math', 'Math[@@toStringTag] is `Math`');
3+
});
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
QUnit.test('Reflect[@@toStringTag]', assert => {
2+
assert.strictEqual(Reflect[Symbol.toStringTag], 'Reflect', 'Reflect[@@toStringTag] is `Reflect`');
3+
});

tests/tests/index.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import './es.math.log2';
5454
import './es.math.sign';
5555
import './es.math.sinh';
5656
import './es.math.tanh';
57+
import './es.math.to-string-tag';
5758
import './es.math.trunc';
5859
import './es.number.constructor';
5960
import './es.number.epsilon';
@@ -111,6 +112,7 @@ import './es.reflect.own-keys';
111112
import './es.reflect.prevent-extensions';
112113
import './es.reflect.set-prototype-of';
113114
import './es.reflect.set';
115+
import './es.reflect.to-string-tag';
114116
import './es.regexp.constructor';
115117
import './es.regexp.exec';
116118
import './es.regexp.flags';

0 commit comments

Comments
 (0)