diff options
author | Linus Groh <mail@linusgroh.de> | 2021-06-13 00:22:35 +0100 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2021-06-13 00:33:28 +0100 |
commit | 7327a28ccc5d5d17f2f24da02b93f43ce92e2d31 (patch) | |
tree | 3ecb66481aa7cf756bfb345d242b22dee1f9d641 /Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp | |
parent | 322c8a3995e3fab7c77b78b60348337e24a2d9e2 (diff) | |
download | serenity-7327a28ccc5d5d17f2f24da02b93f43ce92e2d31.zip |
LibJS: Add ECMA-262 section/title/URL comments almost everywhere
As mentioned on Discord earlier, we'll add these to all new functions
going forward - this is the backfill. Reasons:
- It makes you look at the spec, implementing based on MDN or V8
behavior is a no-go
- It makes finding the various functions that are non-compliant easier,
in the future everything should either have such a comment or, if it's
not from the spec at all, a comment explaining why that is the case
- It makes it easier to check whether a certain abstract operation is
implemented in LibJS, not all of them use the same name as the spec.
E.g. RejectPromise() is Promise::reject()
- It makes it easier to reason about vm.arguments(), e.g. when the
function has a rest parameter
- It makes it easier to see whether a certain function is from a
proposal or Annex B
Also:
- Add arguments to all functions and abstract operations that already
had a comment
- Fix some outdated section numbers
- Replace some ecma-international.org URLs with tc39.es
Diffstat (limited to 'Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp')
-rw-r--r-- | Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp b/Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp index 2087564dc1..92cba45ab2 100644 --- a/Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp +++ b/Userland/Libraries/LibJS/Runtime/IteratorOperations.cpp @@ -10,6 +10,7 @@ namespace JS { +// 7.4.1 GetIterator ( obj [ , hint [ , method ] ] ), https://tc39.es/ecma262/#sec-getiterator Object* get_iterator(GlobalObject& global_object, Value value, IteratorHint hint, Value method) { auto& vm = global_object.vm(); @@ -37,6 +38,7 @@ Object* get_iterator(GlobalObject& global_object, Value value, IteratorHint hint return &iterator.as_object(); } +// 7.4.2 IteratorNext ( iteratorRecord [ , value ] ), https://tc39.es/ecma262/#sec-iteratornext Object* iterator_next(Object& iterator, Value value) { auto& vm = iterator.vm(); @@ -66,11 +68,13 @@ Object* iterator_next(Object& iterator, Value value) return &result.as_object(); } +// 7.4.6 IteratorClose ( iteratorRecord, completion ), https://tc39.es/ecma262/#sec-iteratorclose void iterator_close([[maybe_unused]] Object& iterator) { TODO(); } +// 7.4.10 IterableToList ( items [ , method ] ), https://tc39.es/ecma262/#sec-iterabletolist MarkedValueList iterable_to_list(GlobalObject& global_object, Value iterable, Value method) { auto& vm = global_object.vm(); @@ -86,6 +90,7 @@ MarkedValueList iterable_to_list(GlobalObject& global_object, Value iterable, Va return values; } +// 7.4.8 CreateIterResultObject ( value, done ), https://tc39.es/ecma262/#sec-createiterresultobject Value create_iterator_result_object(GlobalObject& global_object, Value value, bool done) { auto& vm = global_object.vm(); |