summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibJS/Runtime/IteratorOperations.h
AgeCommit message (Collapse)Author
2021-11-29LibJS: Implement the async versions of iterator operationsdavidot
Since AsyncIteratorClose and IteratorClose differ only in that the async version awaits the inner value we just implement them with an enum flag to switch just that behavior.
2021-10-21LibJS: Convert IterableToList AO to ThrowCompletionOrTimothy Flynn
2021-10-21LibJS: Implement IteratorClose with Completions and align to the specTimothy Flynn
2021-10-21LibJS: Convert get_iterator_values helper to ThrowCompletionOrTimothy Flynn
This one is a bit unusual, so to clarify: Previously, callers of get_iterator_values() would supply a callback that would return an IterationDecision, and an enum to indicate whether iterator_close() should be invoked upon IterationDecision::Break. Now, use of both those enums is removed, and callers must return an Optional<Completion>. If a Completion is provided, the iterator will be closed, and that completion will be returned from get_iterator_values. Otherwise, once the iterator is exhausted, a default-initialized Completion will be returned.
2021-10-21LibJS: Convert IteratorValue AO to ThrowCompletionOrTimothy Flynn
2021-10-21LibJS: Convert IteratorComplete AO to ThrowCompletionOrTimothy Flynn
2021-10-21LibJS: Convert IteratorStep AO to ThrowCompletionOrTimothy Flynn
2021-10-21LibJS: Convert IteratorNext AO to ThrowCompletionOrTimothy Flynn
2021-10-21LibJS: Convert GetIterator AO to ThrowCompletionOrTimothy Flynn
2021-09-28LibJS: Change create_iterator_result_object's return type to Object*Idan Horowitz
This always returns an Object, so there's no reason to return a less explicit Value.
2021-07-04LibJS: Add the IteratorStep abstract iterator operationIdan Horowitz
As well as add 2 missing exception checks in the IteratorComplete and IteratorValue abstract iterator operations.
2021-06-27LibJS: Stop qualifying AK::FunctionAndreas Kling
Now that JS function objects are JS::FunctionObject, we can stop qualifying AK::Function and just say "Function" everywhere. Nice. :^)
2021-06-19LibJS: Implement more IteratorOperations and organize fileMatthew Olsson
Implemented IteratorComplete and IteratorValue, and sorted functions based on their spec ordering.
2021-06-15LibJS: Implement the IteratorClose abstract op and use it where neededIdan Horowitz
2021-06-13LibJS: Add ECMA-262 section/title/URL comments almost everywhereLinus Groh
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
2021-06-02LibJS: Replace iterator hint string argument with an enumLinus Groh
There's no reason at all for this to be a string or to accept arbitrary values - just because it's displayed as strings in the spec doesn't mean we have to do the same :^)
2021-04-23Userland: Use mattco@serenityos.org for my copyright headersMatthew Olsson
2021-04-22Everything: Move to SPDX license identifiers in all files.Brian Gianforcaro
SPDX License Identifiers are a more compact / standardized way of representing file license information. See: https://spdx.dev/resources/use/#identifiers This was done with the `ambr` search and replace tool. ambr --no-parent-ignore --key-from-file --rep-from-file key.txt rep.txt *
2021-04-17LibJS: Implement initializing a TypedArray from an iterable objectIdan Horowitz
Based on these specifications (which required IterableToList as well): https://tc39.es/ecma262/#sec-typedarray https://tc39.es/ecma262/#sec-initializetypedarrayfromlist
2021-01-12Libraries: Move to Userland/Libraries/Andreas Kling