Prechádzať zdrojové kódy

LibJS: Add ErrorType for IterableToListOfType value type mismatch

Linus Groh 3 rokov pred
rodič
commit
ca09f20dcf

+ 1 - 0
Userland/Libraries/LibJS/Runtime/ErrorTypes.h

@@ -56,6 +56,7 @@
     M(IterableNextBadReturn, "iterator.next() returned a non-object value")                                                             \
     M(IterableNextNotAFunction, "'next' property on returned object from Symbol.iterator method is not a function")                     \
     M(IterableReturnBadReturn, "iterator.return() returned a non-object value")                                                         \
+    M(IterableToListOfTypeInvalidValue, "Cannot create typed list from iterable, invalid value {}")                                     \
     M(JsonBigInt, "Cannot serialize BigInt value to JSON")                                                                              \
     M(JsonCircular, "Cannot stringify circular object")                                                                                 \
     M(JsonMalformed, "Malformed JSON string")                                                                                           \

+ 1 - 1
Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp

@@ -67,7 +67,7 @@ ThrowCompletionOr<MarkedValueList> iterable_to_list_of_type(GlobalObject& global
             // ii. If Type(nextValue) is not an element of elementTypes, then
             if (auto type = to_option_type(next_value); !type.has_value() || !element_types.contains_slow(*type)) {
                 // 1. Let completion be ThrowCompletion(a newly created TypeError object).
-                auto completion = vm.throw_completion<TypeError>(global_object, ErrorType::FixmeAddAnErrorString);
+                auto completion = vm.throw_completion<TypeError>(global_object, ErrorType::IterableToListOfTypeInvalidValue, next_value.to_string_without_side_effects());
                 // 2. Return ? IteratorClose(iteratorRecord, completion).
                 iterator_close(*iterator_record);
                 return completion;