1use crate::qjs;
2
3#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)]
8#[repr(u32)]
9#[allow(clippy::unnecessary_cast)]
10pub enum PredefinedAtom {
11 Null = qjs::JS_ATOM_null as u32, False = qjs::JS_ATOM_false as u32,
15 True = qjs::JS_ATOM_true as u32,
17 If = qjs::JS_ATOM_if as u32,
19 Else = qjs::JS_ATOM_else as u32,
21 Return = qjs::JS_ATOM_return as u32,
23 Var = qjs::JS_ATOM_var as u32,
25 This = qjs::JS_ATOM_this as u32,
27 Delete = qjs::JS_ATOM_delete as u32,
29 Void = qjs::JS_ATOM_void as u32,
31 Typeof = qjs::JS_ATOM_typeof as u32,
33 New = qjs::JS_ATOM_new as u32,
35 In = qjs::JS_ATOM_in as u32,
37 Instanceof = qjs::JS_ATOM_instanceof as u32,
39 Do = qjs::JS_ATOM_do as u32,
41 While = qjs::JS_ATOM_while as u32,
43 For = qjs::JS_ATOM_for as u32,
45 Break = qjs::JS_ATOM_break as u32,
47 Continue = qjs::JS_ATOM_continue as u32,
49 Switch = qjs::JS_ATOM_switch as u32,
51 Case = qjs::JS_ATOM_case as u32,
53 Default = qjs::JS_ATOM_default as u32,
55 Throw = qjs::JS_ATOM_throw as u32,
57 Try = qjs::JS_ATOM_try as u32,
59 Catch = qjs::JS_ATOM_catch as u32,
61 Finally = qjs::JS_ATOM_finally as u32,
63 FunctionKw = qjs::JS_ATOM_function as u32,
65 Debugger = qjs::JS_ATOM_debugger as u32,
67 With = qjs::JS_ATOM_with as u32,
69 Class = qjs::JS_ATOM_class as u32,
71 Const = qjs::JS_ATOM_const as u32,
73 Enum = qjs::JS_ATOM_enum as u32,
75 Export = qjs::JS_ATOM_export as u32,
77 Extends = qjs::JS_ATOM_extends as u32,
79 Import = qjs::JS_ATOM_import as u32,
81 Super = qjs::JS_ATOM_super as u32,
83 Implements = qjs::JS_ATOM_implements as u32,
85 Interface = qjs::JS_ATOM_interface as u32,
87 Let = qjs::JS_ATOM_let as u32,
89 Package = qjs::JS_ATOM_package as u32,
91 Private = qjs::JS_ATOM_private as u32,
93 Protected = qjs::JS_ATOM_protected as u32,
95 Public = qjs::JS_ATOM_public as u32,
97 Static = qjs::JS_ATOM_static as u32,
99 Yield = qjs::JS_ATOM_yield as u32,
101 Await = qjs::JS_ATOM_await as u32,
103
104 Empty = qjs::JS_ATOM_empty_string as u32,
106 Length = qjs::JS_ATOM_length as u32,
108 Message = qjs::JS_ATOM_message as u32,
110 Errors = qjs::JS_ATOM_errors as u32,
112 Stack = qjs::JS_ATOM_stack as u32,
114 Name = qjs::JS_ATOM_name as u32,
116 ToString = qjs::JS_ATOM_toString as u32,
118 ToLocaleString = qjs::JS_ATOM_toLocaleString as u32,
120 ValueOf = qjs::JS_ATOM_valueOf as u32,
122 Eval = qjs::JS_ATOM_eval as u32,
124 Prototype = qjs::JS_ATOM_prototype as u32,
126 Constructor = qjs::JS_ATOM_constructor as u32,
128 Configurable = qjs::JS_ATOM_configurable as u32,
130 Writable = qjs::JS_ATOM_writable as u32,
132 Enumerable = qjs::JS_ATOM_enumerable as u32,
134 Value = qjs::JS_ATOM_value as u32,
136 Getter = qjs::JS_ATOM_get as u32,
138 Setter = qjs::JS_ATOM_set as u32,
140 Of = qjs::JS_ATOM_of as u32,
142 UnderscoreProto = qjs::JS_ATOM___proto__ as u32,
144 Undefined = qjs::JS_ATOM_undefined as u32,
146 NumberLower = qjs::JS_ATOM_number as u32,
148 BooleanLower = qjs::JS_ATOM_boolean as u32,
150 StringLower = qjs::JS_ATOM_string as u32,
152 ObjectLower = qjs::JS_ATOM_object as u32,
154 SymbolLower = qjs::JS_ATOM_symbol as u32,
156 Integer = qjs::JS_ATOM_integer as u32,
158 Unknown = qjs::JS_ATOM_unknown as u32,
160 ArgumentsLower = qjs::JS_ATOM_arguments as u32,
162 Callee = qjs::JS_ATOM_callee as u32,
164 Caller = qjs::JS_ATOM_caller as u32,
166 LastIndex = qjs::JS_ATOM_lastIndex as u32,
168 Target = qjs::JS_ATOM_target as u32,
170 Index = qjs::JS_ATOM_index as u32,
172 Input = qjs::JS_ATOM_input as u32,
174 DefineProperties = qjs::JS_ATOM_defineProperties as u32,
176 Apply = qjs::JS_ATOM_apply as u32,
178 Join = qjs::JS_ATOM_join as u32,
180 Concat = qjs::JS_ATOM_concat as u32,
182 Split = qjs::JS_ATOM_split as u32,
184 Construct = qjs::JS_ATOM_construct as u32,
186 GetPrototypeOf = qjs::JS_ATOM_getPrototypeOf as u32,
188 SetPrototypeOf = qjs::JS_ATOM_setPrototypeOf as u32,
190 IsExtensible = qjs::JS_ATOM_isExtensible as u32,
192 PreventExtensions = qjs::JS_ATOM_preventExtensions as u32,
194 Has = qjs::JS_ATOM_has as u32,
196 DeleteProperty = qjs::JS_ATOM_deleteProperty as u32,
198 DefineProperty = qjs::JS_ATOM_defineProperty as u32,
200 GetOwnPropertyDescriptor = qjs::JS_ATOM_getOwnPropertyDescriptor as u32,
202 OwnKeys = qjs::JS_ATOM_ownKeys as u32,
204 Add = qjs::JS_ATOM_add as u32,
206 Done = qjs::JS_ATOM_done as u32,
208 Next = qjs::JS_ATOM_next as u32,
210 Values = qjs::JS_ATOM_values as u32,
212 Source = qjs::JS_ATOM_source as u32,
214 Flags = qjs::JS_ATOM_flags as u32,
216 Global = qjs::JS_ATOM_global as u32,
218 Unicode = qjs::JS_ATOM_unicode as u32,
220 Raw = qjs::JS_ATOM_raw as u32,
222 NewTarget = qjs::JS_ATOM_new_target as u32,
224 ThisActiveFunc = qjs::JS_ATOM_this_active_func as u32,
226 HomeObject = qjs::JS_ATOM_home_object as u32,
228 ComputedField = qjs::JS_ATOM_computed_field as u32,
230 StaticComputedField = qjs::JS_ATOM_static_computed_field as u32, ClassFieldsInit = qjs::JS_ATOM_class_fields_init as u32,
234 Brand = qjs::JS_ATOM_brand as u32,
236 HashConstructor = qjs::JS_ATOM_hash_constructor as u32,
238 As = qjs::JS_ATOM_as as u32,
240 From = qjs::JS_ATOM_from as u32,
242 Meta = qjs::JS_ATOM_meta as u32,
244 StarDefault = qjs::JS_ATOM__default_ as u32,
246 Star = qjs::JS_ATOM__star_ as u32,
248 Module = qjs::JS_ATOM_Module as u32,
250 Then = qjs::JS_ATOM_then as u32,
252 Resolve = qjs::JS_ATOM_resolve as u32,
254 Reject = qjs::JS_ATOM_reject as u32,
256 PromiseLower = qjs::JS_ATOM_promise as u32,
258 ProxyLower = qjs::JS_ATOM_proxy as u32,
260 Revoke = qjs::JS_ATOM_revoke as u32,
262 Async = qjs::JS_ATOM_async as u32,
264 Exec = qjs::JS_ATOM_exec as u32,
266 Groups = qjs::JS_ATOM_groups as u32,
268 Status = qjs::JS_ATOM_status as u32,
270 Reason = qjs::JS_ATOM_reason as u32,
272 GlobalThis = qjs::JS_ATOM_globalThis as u32,
274 Bigint = qjs::JS_ATOM_bigint as u32,
276 ToJSON = qjs::JS_ATOM_toJSON as u32,
278 MaxByteLength = qjs::JS_ATOM_maxByteLength as u32,
280 Object = qjs::JS_ATOM_Object as u32,
282 Array = qjs::JS_ATOM_Array as u32,
284 Error = qjs::JS_ATOM_Error as u32,
286 Number = qjs::JS_ATOM_Number as u32,
288 String = qjs::JS_ATOM_String as u32,
290 Boolean = qjs::JS_ATOM_Boolean as u32,
292 Symbol = qjs::JS_ATOM_Symbol as u32,
294 Arguments = qjs::JS_ATOM_Arguments as u32,
296 Math = qjs::JS_ATOM_Math as u32,
298 JSON = qjs::JS_ATOM_JSON as u32,
300 Date = qjs::JS_ATOM_Date as u32,
302 Function = qjs::JS_ATOM_Function as u32,
304 GeneratorFunction = qjs::JS_ATOM_GeneratorFunction as u32,
306 ForInIterator = qjs::JS_ATOM_ForInIterator as u32,
308 Iterator = qjs::JS_ATOM_Iterator as u32,
310 RegExp = qjs::JS_ATOM_RegExp as u32,
312 ArrayBuffer = qjs::JS_ATOM_ArrayBuffer as u32,
314 SharedArrayBuffer = qjs::JS_ATOM_SharedArrayBuffer as u32,
316 Uint8ClampedArray = qjs::JS_ATOM_Uint8ClampedArray as u32,
318 Int8Array = qjs::JS_ATOM_Int8Array as u32,
320 Uint8Array = qjs::JS_ATOM_Uint8Array as u32,
322 Int16Array = qjs::JS_ATOM_Int16Array as u32,
324 Uint16Array = qjs::JS_ATOM_Uint16Array as u32,
326 Int32Array = qjs::JS_ATOM_Int32Array as u32,
328 Uint32Array = qjs::JS_ATOM_Uint32Array as u32,
330 BigInt64Array = qjs::JS_ATOM_BigInt64Array as u32,
332 BigUint64Array = qjs::JS_ATOM_BigUint64Array as u32,
334 #[cfg(feature = "half")]
336 Float16Array = qjs::JS_ATOM_Float16Array as u32,
337 Float32Array = qjs::JS_ATOM_Float32Array as u32,
339 Float64Array = qjs::JS_ATOM_Float64Array as u32,
341 DataView = qjs::JS_ATOM_DataView as u32,
343 BigInt = qjs::JS_ATOM_BigInt as u32,
345 Map = qjs::JS_ATOM_Map as u32,
347 Set = qjs::JS_ATOM_Set as u32,
349 WeakMap = qjs::JS_ATOM_WeakMap as u32,
351 WeakSet = qjs::JS_ATOM_WeakSet as u32,
353 MapIterator = qjs::JS_ATOM_Map_Iterator as u32,
355 SetIterator = qjs::JS_ATOM_Set_Iterator as u32,
357 ArrayIterator = qjs::JS_ATOM_Array_Iterator as u32,
359 StringIterator = qjs::JS_ATOM_String_Iterator as u32,
361 RegExpStringIterator = qjs::JS_ATOM_RegExp_String_Iterator as u32,
363 Generator = qjs::JS_ATOM_Generator as u32,
365 Proxy = qjs::JS_ATOM_Proxy as u32,
367 Promise = qjs::JS_ATOM_Promise as u32,
369 PromiseResolveFunction = qjs::JS_ATOM_PromiseResolveFunction as u32,
371 PromiseRejectFunction = qjs::JS_ATOM_PromiseRejectFunction as u32,
373 AsyncFunction = qjs::JS_ATOM_AsyncFunction as u32,
375 AsyncFunctionResolve = qjs::JS_ATOM_AsyncFunctionResolve as u32,
377 AsyncFunctionReject = qjs::JS_ATOM_AsyncFunctionReject as u32,
379 AsyncGeneratorFunction = qjs::JS_ATOM_AsyncGeneratorFunction as u32,
381 AsyncGenerator = qjs::JS_ATOM_AsyncGenerator as u32,
383 EvalError = qjs::JS_ATOM_EvalError as u32,
385 RangeError = qjs::JS_ATOM_RangeError as u32,
387 ReferenceError = qjs::JS_ATOM_ReferenceError as u32,
389 SyntaxError = qjs::JS_ATOM_SyntaxError as u32,
391 TypeError = qjs::JS_ATOM_TypeError as u32,
393 URIError = qjs::JS_ATOM_URIError as u32,
395 InternalError = qjs::JS_ATOM_InternalError as u32,
397 SymbolAsyncIterator = qjs::JS_ATOM_Symbol_asyncIterator as u32,
399 SymbolIterator = qjs::JS_ATOM_Symbol_iterator as u32,
401 SymbolMatch = qjs::JS_ATOM_Symbol_match as u32,
403 SymbolMatchAll = qjs::JS_ATOM_Symbol_matchAll as u32,
405 SymbolReplace = qjs::JS_ATOM_Symbol_replace as u32,
407 SymbolSearch = qjs::JS_ATOM_Symbol_search as u32,
409 SymbolSplit = qjs::JS_ATOM_Symbol_split as u32,
411 SymbolToPrimitive = qjs::JS_ATOM_Symbol_toPrimitive as u32,
413 SymbolToStringTag = qjs::JS_ATOM_Symbol_toStringTag as u32,
415 SymbolIsConcatSpreadable = qjs::JS_ATOM_Symbol_isConcatSpreadable as u32,
417 SymbolHasInstance = qjs::JS_ATOM_Symbol_hasInstance as u32,
419 SymbolSpecies = qjs::JS_ATOM_Symbol_species as u32,
421 SymbolUnscopables = qjs::JS_ATOM_Symbol_unscopables as u32,
423}
424
425impl PredefinedAtom {
426 pub const fn is_symbol(self) -> bool {
427 matches!(
428 self,
429 PredefinedAtom::SymbolAsyncIterator
430 | PredefinedAtom::SymbolIterator
431 | PredefinedAtom::SymbolMatch
432 | PredefinedAtom::SymbolMatchAll
433 | PredefinedAtom::SymbolReplace
434 | PredefinedAtom::SymbolSearch
435 | PredefinedAtom::SymbolSplit
436 | PredefinedAtom::SymbolToStringTag
437 | PredefinedAtom::SymbolIsConcatSpreadable
438 | PredefinedAtom::SymbolHasInstance
439 | PredefinedAtom::SymbolSpecies
440 | PredefinedAtom::SymbolUnscopables
441 )
442 }
443
444 pub const fn to_str(self) -> &'static str {
445 match self {
446 PredefinedAtom::Null => "null",
447 PredefinedAtom::False => "false",
448 PredefinedAtom::True => "true",
449 PredefinedAtom::If => "if",
450 PredefinedAtom::Else => "else",
451 PredefinedAtom::Return => "return",
452 PredefinedAtom::Var => "var",
453 PredefinedAtom::This => "this",
454 PredefinedAtom::Delete => "delete",
455 PredefinedAtom::Void => "void",
456 PredefinedAtom::Typeof => "typeof",
457 PredefinedAtom::New => "new",
458 PredefinedAtom::In => "in",
459 PredefinedAtom::Instanceof => "instanceof",
460 PredefinedAtom::Do => "do",
461 PredefinedAtom::While => "while",
462 PredefinedAtom::For => "for",
463 PredefinedAtom::Break => "break",
464 PredefinedAtom::Continue => "continue",
465 PredefinedAtom::Switch => "switch",
466 PredefinedAtom::Case => "case",
467 PredefinedAtom::Default => "default",
468 PredefinedAtom::Throw => "throw",
469 PredefinedAtom::Try => "try",
470 PredefinedAtom::Catch => "catch",
471 PredefinedAtom::Finally => "finally",
472 PredefinedAtom::FunctionKw => "function",
473 PredefinedAtom::Debugger => "debugger",
474 PredefinedAtom::With => "with",
475 PredefinedAtom::Class => "class",
476 PredefinedAtom::Const => "const",
477 PredefinedAtom::Enum => "enum",
478 PredefinedAtom::Export => "export",
479 PredefinedAtom::Extends => "extends",
480 PredefinedAtom::Import => "import",
481 PredefinedAtom::Super => "super",
482 PredefinedAtom::Implements => "implements",
483 PredefinedAtom::Interface => "interface",
484 PredefinedAtom::Let => "let",
485 PredefinedAtom::Package => "package",
486 PredefinedAtom::Private => "private",
487 PredefinedAtom::Protected => "protected",
488 PredefinedAtom::Public => "public",
489 PredefinedAtom::Static => "static",
490 PredefinedAtom::Yield => "yield",
491 PredefinedAtom::Await => "await",
492 PredefinedAtom::Empty => "",
493 PredefinedAtom::Length => "length",
494 PredefinedAtom::Message => "message",
495 PredefinedAtom::Errors => "errors",
496 PredefinedAtom::Stack => "stack",
497 PredefinedAtom::Name => "name",
498 PredefinedAtom::ToString => "toString",
499 PredefinedAtom::ToLocaleString => "toLocaleString",
500 PredefinedAtom::ValueOf => "valueOf",
501 PredefinedAtom::Eval => "eval",
502 PredefinedAtom::Prototype => "prototype",
503 PredefinedAtom::Constructor => "constructor",
504 PredefinedAtom::Configurable => "configurable",
505 PredefinedAtom::Writable => "writable",
506 PredefinedAtom::Enumerable => "enumerable",
507 PredefinedAtom::Value => "value",
508 PredefinedAtom::Getter => "get",
509 PredefinedAtom::Setter => "set",
510 PredefinedAtom::Of => "of",
511 PredefinedAtom::UnderscoreProto => "__proto__",
512 PredefinedAtom::Undefined => "undefined",
513 PredefinedAtom::NumberLower => "number",
514 PredefinedAtom::BooleanLower => "boolean",
515 PredefinedAtom::StringLower => "string",
516 PredefinedAtom::ObjectLower => "object",
517 PredefinedAtom::SymbolLower => "symbol",
518 PredefinedAtom::Integer => "integer",
519 PredefinedAtom::Unknown => "unknown",
520 PredefinedAtom::ArgumentsLower => "arguments",
521 PredefinedAtom::Callee => "callee",
522 PredefinedAtom::Caller => "caller",
523 PredefinedAtom::LastIndex => "lastIndex",
524 PredefinedAtom::Target => "target",
525 PredefinedAtom::Index => "index",
526 PredefinedAtom::Input => "input",
527 PredefinedAtom::DefineProperties => "defineProperties",
528 PredefinedAtom::Apply => "apply",
529 PredefinedAtom::Join => "join",
530 PredefinedAtom::Concat => "concat",
531 PredefinedAtom::Split => "split",
532 PredefinedAtom::Construct => "construct",
533 PredefinedAtom::GetPrototypeOf => "getPrototypeOf",
534 PredefinedAtom::SetPrototypeOf => "setPrototypeOf",
535 PredefinedAtom::IsExtensible => "isExtensible",
536 PredefinedAtom::PreventExtensions => "preventExtensions",
537 PredefinedAtom::Has => "has",
538 PredefinedAtom::DeleteProperty => "deleteProperty",
539 PredefinedAtom::DefineProperty => "defineProperty",
540 PredefinedAtom::GetOwnPropertyDescriptor => "getOwnPropertyDescriptor",
541 PredefinedAtom::OwnKeys => "ownKeys",
542 PredefinedAtom::Add => "add",
543 PredefinedAtom::Done => "done",
544 PredefinedAtom::Next => "next",
545 PredefinedAtom::Values => "values",
546 PredefinedAtom::Source => "source",
547 PredefinedAtom::Flags => "flags",
548 PredefinedAtom::Global => "global",
549 PredefinedAtom::Unicode => "unicode",
550 PredefinedAtom::Raw => "raw",
551 PredefinedAtom::NewTarget => "new.target",
552 PredefinedAtom::ThisActiveFunc => "this.active_func",
553 PredefinedAtom::HomeObject => "<home_object>",
554 PredefinedAtom::ComputedField => "<computed_field>",
555 PredefinedAtom::StaticComputedField => "<static_computed_field>",
556 PredefinedAtom::ClassFieldsInit => "<class_fields_init>",
557 PredefinedAtom::Brand => "<brand>",
558 PredefinedAtom::HashConstructor => "#constructor",
559 PredefinedAtom::As => "as",
560 PredefinedAtom::From => "from",
561 PredefinedAtom::Meta => "meta",
562 PredefinedAtom::StarDefault => "*default*",
563 PredefinedAtom::Star => "*",
564 PredefinedAtom::Module => "Module",
565 PredefinedAtom::Then => "then",
566 PredefinedAtom::Resolve => "resolve",
567 PredefinedAtom::Reject => "reject",
568 PredefinedAtom::PromiseLower => "promise",
569 PredefinedAtom::ProxyLower => "proxy",
570 PredefinedAtom::Revoke => "revoke",
571 PredefinedAtom::Async => "async",
572 PredefinedAtom::Exec => "exec",
573 PredefinedAtom::Groups => "groups",
574 PredefinedAtom::Status => "status",
575 PredefinedAtom::Reason => "reason",
576 PredefinedAtom::GlobalThis => "globalThis",
577 PredefinedAtom::Bigint => "bigint",
578 PredefinedAtom::ToJSON => "toJSON",
579 PredefinedAtom::MaxByteLength => "maxByteLength",
580 PredefinedAtom::Object => "Object",
581 PredefinedAtom::Array => "Array",
582 PredefinedAtom::Error => "Error",
583 PredefinedAtom::Number => "Number",
584 PredefinedAtom::String => "String",
585 PredefinedAtom::Boolean => "Boolean",
586 PredefinedAtom::Symbol => "Symbol",
587 PredefinedAtom::Arguments => "Arguments",
588 PredefinedAtom::Math => "Math",
589 PredefinedAtom::JSON => "JSON",
590 PredefinedAtom::Date => "Date",
591 PredefinedAtom::Function => "Function",
592 PredefinedAtom::GeneratorFunction => "GeneratorFunction",
593 PredefinedAtom::ForInIterator => "ForInIterator",
594 PredefinedAtom::Iterator => "Iterator",
595 PredefinedAtom::RegExp => "RegExp",
596 PredefinedAtom::ArrayBuffer => "ArrayBuffer",
597 PredefinedAtom::SharedArrayBuffer => "SharedArrayBuffer",
598 PredefinedAtom::Uint8ClampedArray => "Uint8ClampedArray",
599 PredefinedAtom::Int8Array => "Int8Array",
600 PredefinedAtom::Uint8Array => "Uint8Array",
601 PredefinedAtom::Int16Array => "Int16Array",
602 PredefinedAtom::Uint16Array => "Uint16Array",
603 PredefinedAtom::Int32Array => "Int32Array",
604 PredefinedAtom::Uint32Array => "Uint32Array",
605 PredefinedAtom::BigInt64Array => "BigInt64Array",
606 PredefinedAtom::BigUint64Array => "BigUint64Array",
607 #[cfg(feature = "half")]
608 PredefinedAtom::Float16Array => "Float16Array",
609 PredefinedAtom::Float32Array => "Float32Array",
610 PredefinedAtom::Float64Array => "Float64Array",
611 PredefinedAtom::DataView => "DataView",
612 PredefinedAtom::BigInt => "BigInt",
613 PredefinedAtom::Map => "Map",
614 PredefinedAtom::Set => "Set",
615 PredefinedAtom::WeakMap => "WeakMap",
616 PredefinedAtom::WeakSet => "WeakSet",
617 PredefinedAtom::MapIterator => "Map Iterator",
618 PredefinedAtom::SetIterator => "Set Iterator",
619 PredefinedAtom::ArrayIterator => "Array Iterator",
620 PredefinedAtom::StringIterator => "String Iterator",
621 PredefinedAtom::RegExpStringIterator => "RegExp String Iterator",
622 PredefinedAtom::Generator => "Generator",
623 PredefinedAtom::Proxy => "Proxy",
624 PredefinedAtom::Promise => "Promise",
625 PredefinedAtom::PromiseResolveFunction => "PromiseResolveFunction",
626 PredefinedAtom::PromiseRejectFunction => "PromiseRejectFunction",
627 PredefinedAtom::AsyncFunction => "AsyncFunction",
628 PredefinedAtom::AsyncFunctionResolve => "AsyncFunctionResolve",
629 PredefinedAtom::AsyncFunctionReject => "AsyncFunctionReject",
630 PredefinedAtom::AsyncGeneratorFunction => "AsyncGeneratorFunction",
631 PredefinedAtom::AsyncGenerator => "AsyncGenerator",
632 PredefinedAtom::EvalError => "EvalError",
633 PredefinedAtom::RangeError => "RangeError",
634 PredefinedAtom::ReferenceError => "ReferenceError",
635 PredefinedAtom::SyntaxError => "SyntaxError",
636 PredefinedAtom::TypeError => "TypeError",
637 PredefinedAtom::URIError => "URIError",
638 PredefinedAtom::InternalError => "InternalError",
639 PredefinedAtom::SymbolAsyncIterator => "Symbol.asyncIterator",
640 PredefinedAtom::SymbolIterator => "Symbol.iterator",
641 PredefinedAtom::SymbolMatch => "Symbol.match",
642 PredefinedAtom::SymbolMatchAll => "Symbol.matchAll",
643 PredefinedAtom::SymbolReplace => "Symbol.replace",
644 PredefinedAtom::SymbolSearch => "Symbol.search",
645 PredefinedAtom::SymbolSplit => "Symbol.split",
646 PredefinedAtom::SymbolToPrimitive => "Symbol.toPrimitive",
647 PredefinedAtom::SymbolToStringTag => "Symbol.toStringTag",
648 PredefinedAtom::SymbolIsConcatSpreadable => "Symbol.isConcatSpreadable",
649 PredefinedAtom::SymbolHasInstance => "Symbol.hasInstance",
650 PredefinedAtom::SymbolSpecies => "Symbol.species",
651 PredefinedAtom::SymbolUnscopables => "Symbol.unscopables",
652 }
653 }
654}
655
656#[cfg(test)]
657mod test {
658 use crate::{Atom, Context, IntoAtom, Runtime};
659
660 use super::PredefinedAtom;
661 #[test]
662 fn string_correct() {
663 static ALL_PREDEFS: &[PredefinedAtom] = &[
664 PredefinedAtom::Null,
665 PredefinedAtom::False,
666 PredefinedAtom::True,
667 PredefinedAtom::If,
668 PredefinedAtom::Else,
669 PredefinedAtom::Return,
670 PredefinedAtom::Var,
671 PredefinedAtom::This,
672 PredefinedAtom::Delete,
673 PredefinedAtom::Void,
674 PredefinedAtom::Typeof,
675 PredefinedAtom::New,
676 PredefinedAtom::In,
677 PredefinedAtom::Instanceof,
678 PredefinedAtom::Do,
679 PredefinedAtom::While,
680 PredefinedAtom::For,
681 PredefinedAtom::Break,
682 PredefinedAtom::Continue,
683 PredefinedAtom::Switch,
684 PredefinedAtom::Case,
685 PredefinedAtom::Default,
686 PredefinedAtom::Throw,
687 PredefinedAtom::Try,
688 PredefinedAtom::Catch,
689 PredefinedAtom::Finally,
690 PredefinedAtom::FunctionKw,
691 PredefinedAtom::Debugger,
692 PredefinedAtom::With,
693 PredefinedAtom::Class,
694 PredefinedAtom::Const,
695 PredefinedAtom::Enum,
696 PredefinedAtom::Export,
697 PredefinedAtom::Extends,
698 PredefinedAtom::Import,
699 PredefinedAtom::Super,
700 PredefinedAtom::Implements,
701 PredefinedAtom::Interface,
702 PredefinedAtom::Let,
703 PredefinedAtom::Package,
704 PredefinedAtom::Private,
705 PredefinedAtom::Protected,
706 PredefinedAtom::Public,
707 PredefinedAtom::Static,
708 PredefinedAtom::Yield,
709 PredefinedAtom::Await,
710 PredefinedAtom::Empty,
711 PredefinedAtom::Length,
712 PredefinedAtom::Message,
713 PredefinedAtom::Errors,
714 PredefinedAtom::Stack,
715 PredefinedAtom::Name,
716 PredefinedAtom::ToString,
717 PredefinedAtom::ToLocaleString,
718 PredefinedAtom::ValueOf,
719 PredefinedAtom::Eval,
720 PredefinedAtom::Prototype,
721 PredefinedAtom::Constructor,
722 PredefinedAtom::Configurable,
723 PredefinedAtom::Writable,
724 PredefinedAtom::Enumerable,
725 PredefinedAtom::Value,
726 PredefinedAtom::Getter,
727 PredefinedAtom::Setter,
728 PredefinedAtom::Of,
729 PredefinedAtom::UnderscoreProto,
730 PredefinedAtom::Undefined,
731 PredefinedAtom::NumberLower,
732 PredefinedAtom::BooleanLower,
733 PredefinedAtom::StringLower,
734 PredefinedAtom::ObjectLower,
735 PredefinedAtom::SymbolLower,
736 PredefinedAtom::Integer,
737 PredefinedAtom::Unknown,
738 PredefinedAtom::ArgumentsLower,
739 PredefinedAtom::Callee,
740 PredefinedAtom::Caller,
741 PredefinedAtom::LastIndex,
742 PredefinedAtom::Target,
743 PredefinedAtom::Index,
744 PredefinedAtom::Input,
745 PredefinedAtom::DefineProperties,
746 PredefinedAtom::Apply,
747 PredefinedAtom::Join,
748 PredefinedAtom::Concat,
749 PredefinedAtom::Split,
750 PredefinedAtom::Construct,
751 PredefinedAtom::GetPrototypeOf,
752 PredefinedAtom::SetPrototypeOf,
753 PredefinedAtom::IsExtensible,
754 PredefinedAtom::PreventExtensions,
755 PredefinedAtom::Has,
756 PredefinedAtom::DeleteProperty,
757 PredefinedAtom::DefineProperty,
758 PredefinedAtom::GetOwnPropertyDescriptor,
759 PredefinedAtom::OwnKeys,
760 PredefinedAtom::Add,
761 PredefinedAtom::Done,
762 PredefinedAtom::Next,
763 PredefinedAtom::Values,
764 PredefinedAtom::Source,
765 PredefinedAtom::Flags,
766 PredefinedAtom::Global,
767 PredefinedAtom::Unicode,
768 PredefinedAtom::Raw,
769 PredefinedAtom::NewTarget,
770 PredefinedAtom::ThisActiveFunc,
771 PredefinedAtom::HomeObject,
772 PredefinedAtom::ComputedField,
773 PredefinedAtom::StaticComputedField,
774 PredefinedAtom::ClassFieldsInit,
775 PredefinedAtom::Brand,
776 PredefinedAtom::HashConstructor,
777 PredefinedAtom::As,
778 PredefinedAtom::From,
779 PredefinedAtom::Meta,
780 PredefinedAtom::StarDefault,
781 PredefinedAtom::Star,
782 PredefinedAtom::Module,
783 PredefinedAtom::Then,
784 PredefinedAtom::Resolve,
785 PredefinedAtom::Reject,
786 PredefinedAtom::PromiseLower,
787 PredefinedAtom::ProxyLower,
788 PredefinedAtom::Revoke,
789 PredefinedAtom::Async,
790 PredefinedAtom::Exec,
791 PredefinedAtom::Groups,
792 PredefinedAtom::Status,
793 PredefinedAtom::Reason,
794 PredefinedAtom::GlobalThis,
795 PredefinedAtom::Bigint,
796 PredefinedAtom::ToJSON,
797 PredefinedAtom::Object,
798 PredefinedAtom::Array,
799 PredefinedAtom::Error,
800 PredefinedAtom::Number,
801 PredefinedAtom::String,
802 PredefinedAtom::Boolean,
803 PredefinedAtom::Symbol,
804 PredefinedAtom::Arguments,
805 PredefinedAtom::Math,
806 PredefinedAtom::JSON,
807 PredefinedAtom::Date,
808 PredefinedAtom::Function,
809 PredefinedAtom::GeneratorFunction,
810 PredefinedAtom::ForInIterator,
811 PredefinedAtom::RegExp,
812 PredefinedAtom::ArrayBuffer,
813 PredefinedAtom::SharedArrayBuffer,
814 PredefinedAtom::Uint8ClampedArray,
815 PredefinedAtom::Int8Array,
816 PredefinedAtom::Uint8Array,
817 PredefinedAtom::Int16Array,
818 PredefinedAtom::Uint16Array,
819 PredefinedAtom::Int32Array,
820 PredefinedAtom::Uint32Array,
821 PredefinedAtom::BigInt64Array,
822 PredefinedAtom::BigUint64Array,
823 PredefinedAtom::Float32Array,
824 PredefinedAtom::Float64Array,
825 PredefinedAtom::DataView,
826 PredefinedAtom::BigInt,
827 PredefinedAtom::Map,
828 PredefinedAtom::Set,
829 PredefinedAtom::WeakMap,
830 PredefinedAtom::WeakSet,
831 PredefinedAtom::MapIterator,
832 PredefinedAtom::SetIterator,
833 PredefinedAtom::ArrayIterator,
834 PredefinedAtom::StringIterator,
835 PredefinedAtom::RegExpStringIterator,
836 PredefinedAtom::Generator,
837 PredefinedAtom::Proxy,
838 PredefinedAtom::Promise,
839 PredefinedAtom::PromiseResolveFunction,
840 PredefinedAtom::PromiseRejectFunction,
841 PredefinedAtom::AsyncFunction,
842 PredefinedAtom::AsyncFunctionResolve,
843 PredefinedAtom::AsyncFunctionReject,
844 PredefinedAtom::AsyncGeneratorFunction,
845 PredefinedAtom::AsyncGenerator,
846 PredefinedAtom::EvalError,
847 PredefinedAtom::RangeError,
848 PredefinedAtom::ReferenceError,
849 PredefinedAtom::SyntaxError,
850 PredefinedAtom::TypeError,
851 PredefinedAtom::URIError,
852 PredefinedAtom::InternalError,
853 PredefinedAtom::SymbolAsyncIterator,
854 PredefinedAtom::SymbolIterator,
855 PredefinedAtom::SymbolMatch,
856 PredefinedAtom::SymbolMatchAll,
857 PredefinedAtom::SymbolReplace,
858 PredefinedAtom::SymbolSearch,
859 PredefinedAtom::SymbolSplit,
860 PredefinedAtom::SymbolToStringTag,
861 PredefinedAtom::SymbolIsConcatSpreadable,
862 PredefinedAtom::SymbolHasInstance,
863 PredefinedAtom::SymbolSpecies,
864 PredefinedAtom::SymbolUnscopables,
865 ];
866
867 let rt = Runtime::new().unwrap();
868 let context = Context::full(&rt).unwrap();
869 context.with(|ctx| {
870 for predef in ALL_PREDEFS {
871 let atom = predef.into_atom(&ctx).unwrap();
872 assert_eq!(atom.to_string().unwrap().as_str(), predef.to_str());
873
874 if predef.is_symbol() {
876 continue;
877 }
878
879 let from_str = Atom::from_str(ctx.clone(), predef.to_str()).unwrap();
880 assert_eq!(
881 atom,
882 from_str,
883 "Atom `{}` from str and from redefined not equal",
884 predef.to_str()
885 )
886 }
887 })
888 }
889}