瀏覽代碼

LibJS: Implement Iterator.prototype [ @@toStringTag ]

Timothy Flynn 2 年之前
父節點
當前提交
7ff6b472c0

+ 4 - 0
Userland/Libraries/LibJS/Runtime/IteratorPrototype.cpp

@@ -20,6 +20,10 @@ ThrowCompletionOr<void> IteratorPrototype::initialize(Realm& realm)
 {
     auto& vm = this->vm();
     MUST_OR_THROW_OOM(Base::initialize(realm));
+
+    // 3.1.3.13 Iterator.prototype [ @@toStringTag ], https://tc39.es/proposal-iterator-helpers/#sec-iteratorprototype-@@tostringtag
+    define_direct_property(vm.well_known_symbol_to_string_tag(), MUST_OR_THROW_OOM(PrimitiveString::create(vm, "Iterator"sv)), Attribute::Configurable | Attribute::Writable);
+
     u8 attr = Attribute::Writable | Attribute::Configurable;
     define_native_function(realm, vm.well_known_symbol_iterator(), symbol_iterator, 0, attr);
 

+ 3 - 0
Userland/Libraries/LibJS/Tests/builtins/Iterator/Iterator.prototype.@@toStringTag.js

@@ -0,0 +1,3 @@
+test("basic functionality", () => {
+    expect(Iterator.prototype[Symbol.toStringTag]).toBe("Iterator");
+});