From 4b8a813ba193f7edc9a3ffb2ac69602d22f5a2ed Mon Sep 17 00:00:00 2001 From: Julian Garn Date: Fri, 16 Sep 2022 08:22:17 +0200 Subject: [PATCH] Make toStringTag writable Spec change: https://github.com/tc39/proposal-iterator-helpers/pull/214 --- .../js/test/builtins/AsyncIteratorPrototypeBuiltinsTest.java | 3 +++ .../js/test/builtins/IteratorPrototypeBuiltinsTest.java | 3 +++ .../oracle/truffle/js/runtime/builtins/JSAsyncIterator.java | 2 +- .../src/com/oracle/truffle/js/runtime/builtins/JSIterator.java | 2 +- 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/AsyncIteratorPrototypeBuiltinsTest.java b/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/AsyncIteratorPrototypeBuiltinsTest.java index 4a4e68e286d..85ee344c716 100644 --- a/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/AsyncIteratorPrototypeBuiltinsTest.java +++ b/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/AsyncIteratorPrototypeBuiltinsTest.java @@ -511,6 +511,9 @@ public void testToString() { try (Context context = builder.build()) { Value result = context.eval(JavaScriptLanguage.ID, "AsyncIterator.prototype[Symbol.toStringTag]"); Assert.assertEquals("Async Iterator", result.asString()); + + result = context.eval(JavaScriptLanguage.ID, "AsyncIterator.prototype[Symbol.toStringTag] = 'Changed'; AsyncIterator.prototype[Symbol.toStringTag]"); + Assert.assertEquals("Changed", result.asString()); } } diff --git a/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/IteratorPrototypeBuiltinsTest.java b/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/IteratorPrototypeBuiltinsTest.java index 3f1652977d1..6c2242b1ff7 100644 --- a/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/IteratorPrototypeBuiltinsTest.java +++ b/graal-js/src/com.oracle.truffle.js.test/src/com/oracle/truffle/js/test/builtins/IteratorPrototypeBuiltinsTest.java @@ -605,6 +605,9 @@ public void testToString() { try (Context context = builder.build()) { Value result = context.eval(JavaScriptLanguage.ID, "Iterator.prototype[Symbol.toStringTag]"); Assert.assertEquals("Iterator", result.asString()); + + result = context.eval(JavaScriptLanguage.ID, "Iterator.prototype[Symbol.toStringTag] = 'Changed'; Iterator.prototype[Symbol.toStringTag]"); + Assert.assertEquals("Changed", result.asString()); } } diff --git a/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSAsyncIterator.java b/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSAsyncIterator.java index 90c1b50e32f..151cb659fa4 100644 --- a/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSAsyncIterator.java +++ b/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSAsyncIterator.java @@ -77,7 +77,7 @@ public JSDynamicObject createPrototype(JSRealm realm, JSFunctionObject ctor) { JSObjectUtil.putConstructorProperty(ctx, iteratorPrototype, ctor); JSObjectUtil.putFunctionsFromContainer(realm, iteratorPrototype, AsyncIteratorPrototypeBuiltins.BUILTINS); - JSObjectUtil.putToStringTag(iteratorPrototype, TO_STRING_NAME); + JSObjectUtil.putDataProperty(iteratorPrototype, Symbol.SYMBOL_TO_STRING_TAG, TO_STRING_NAME, JSAttributes.getDefaultNotEnumerable()); JSObjectUtil.putDataProperty(realm.getContext(), iteratorPrototype, Symbol.SYMBOL_ASYNC_ITERATOR, createIteratorPrototypeSymbolIteratorFunction(realm), JSAttributes.getDefaultNotEnumerable()); return iteratorPrototype; diff --git a/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSIterator.java b/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSIterator.java index 8c3f835d55a..b879cbcd6ba 100644 --- a/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSIterator.java +++ b/graal-js/src/com.oracle.truffle.js/src/com/oracle/truffle/js/runtime/builtins/JSIterator.java @@ -76,7 +76,7 @@ public JSDynamicObject createPrototype(JSRealm realm, JSFunctionObject ctor) { JSObjectUtil.putConstructorProperty(ctx, iteratorPrototype, ctor); JSObjectUtil.putFunctionsFromContainer(realm, iteratorPrototype, IteratorPrototypeBuiltins.BUILTINS); - JSObjectUtil.putToStringTag(iteratorPrototype, CLASS_NAME); + JSObjectUtil.putDataProperty(iteratorPrototype, Symbol.SYMBOL_TO_STRING_TAG, CLASS_NAME, JSAttributes.getDefaultNotEnumerable()); JSObjectUtil.putDataProperty(realm.getContext(), iteratorPrototype, Symbol.SYMBOL_ITERATOR, createIteratorPrototypeSymbolIteratorFunction(realm), JSAttributes.getDefaultNotEnumerable()); return iteratorPrototype;