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 DOMException = qjs::JS_ATOM_DOMException as u32,
399 SymbolAsyncIterator = qjs::JS_ATOM_Symbol_asyncIterator as u32,
401 SymbolIterator = qjs::JS_ATOM_Symbol_iterator as u32,
403 SymbolMatch = qjs::JS_ATOM_Symbol_match as u32,
405 SymbolMatchAll = qjs::JS_ATOM_Symbol_matchAll as u32,
407 SymbolReplace = qjs::JS_ATOM_Symbol_replace as u32,
409 SymbolSearch = qjs::JS_ATOM_Symbol_search as u32,
411 SymbolSplit = qjs::JS_ATOM_Symbol_split as u32,
413 SymbolToPrimitive = qjs::JS_ATOM_Symbol_toPrimitive as u32,
415 SymbolToStringTag = qjs::JS_ATOM_Symbol_toStringTag as u32,
417 SymbolIsConcatSpreadable = qjs::JS_ATOM_Symbol_isConcatSpreadable as u32,
419 SymbolHasInstance = qjs::JS_ATOM_Symbol_hasInstance as u32,
421 SymbolSpecies = qjs::JS_ATOM_Symbol_species as u32,
423 SymbolUnscopables = qjs::JS_ATOM_Symbol_unscopables as u32,
425}
426
427impl PredefinedAtom {
428 pub const fn is_symbol(self) -> bool {
429 matches!(
430 self,
431 PredefinedAtom::SymbolAsyncIterator
432 | PredefinedAtom::SymbolIterator
433 | PredefinedAtom::SymbolMatch
434 | PredefinedAtom::SymbolMatchAll
435 | PredefinedAtom::SymbolReplace
436 | PredefinedAtom::SymbolSearch
437 | PredefinedAtom::SymbolSplit
438 | PredefinedAtom::SymbolToStringTag
439 | PredefinedAtom::SymbolIsConcatSpreadable
440 | PredefinedAtom::SymbolHasInstance
441 | PredefinedAtom::SymbolSpecies
442 | PredefinedAtom::SymbolUnscopables
443 )
444 }
445
446 pub const fn to_str(self) -> &'static str {
447 match self {
448 PredefinedAtom::Null => "null",
449 PredefinedAtom::False => "false",
450 PredefinedAtom::True => "true",
451 PredefinedAtom::If => "if",
452 PredefinedAtom::Else => "else",
453 PredefinedAtom::Return => "return",
454 PredefinedAtom::Var => "var",
455 PredefinedAtom::This => "this",
456 PredefinedAtom::Delete => "delete",
457 PredefinedAtom::Void => "void",
458 PredefinedAtom::Typeof => "typeof",
459 PredefinedAtom::New => "new",
460 PredefinedAtom::In => "in",
461 PredefinedAtom::Instanceof => "instanceof",
462 PredefinedAtom::Do => "do",
463 PredefinedAtom::While => "while",
464 PredefinedAtom::For => "for",
465 PredefinedAtom::Break => "break",
466 PredefinedAtom::Continue => "continue",
467 PredefinedAtom::Switch => "switch",
468 PredefinedAtom::Case => "case",
469 PredefinedAtom::Default => "default",
470 PredefinedAtom::Throw => "throw",
471 PredefinedAtom::Try => "try",
472 PredefinedAtom::Catch => "catch",
473 PredefinedAtom::Finally => "finally",
474 PredefinedAtom::FunctionKw => "function",
475 PredefinedAtom::Debugger => "debugger",
476 PredefinedAtom::With => "with",
477 PredefinedAtom::Class => "class",
478 PredefinedAtom::Const => "const",
479 PredefinedAtom::Enum => "enum",
480 PredefinedAtom::Export => "export",
481 PredefinedAtom::Extends => "extends",
482 PredefinedAtom::Import => "import",
483 PredefinedAtom::Super => "super",
484 PredefinedAtom::Implements => "implements",
485 PredefinedAtom::Interface => "interface",
486 PredefinedAtom::Let => "let",
487 PredefinedAtom::Package => "package",
488 PredefinedAtom::Private => "private",
489 PredefinedAtom::Protected => "protected",
490 PredefinedAtom::Public => "public",
491 PredefinedAtom::Static => "static",
492 PredefinedAtom::Yield => "yield",
493 PredefinedAtom::Await => "await",
494 PredefinedAtom::Empty => "",
495 PredefinedAtom::Length => "length",
496 PredefinedAtom::Message => "message",
497 PredefinedAtom::Errors => "errors",
498 PredefinedAtom::Stack => "stack",
499 PredefinedAtom::Name => "name",
500 PredefinedAtom::ToString => "toString",
501 PredefinedAtom::ToLocaleString => "toLocaleString",
502 PredefinedAtom::ValueOf => "valueOf",
503 PredefinedAtom::Eval => "eval",
504 PredefinedAtom::Prototype => "prototype",
505 PredefinedAtom::Constructor => "constructor",
506 PredefinedAtom::Configurable => "configurable",
507 PredefinedAtom::Writable => "writable",
508 PredefinedAtom::Enumerable => "enumerable",
509 PredefinedAtom::Value => "value",
510 PredefinedAtom::Getter => "get",
511 PredefinedAtom::Setter => "set",
512 PredefinedAtom::Of => "of",
513 PredefinedAtom::UnderscoreProto => "__proto__",
514 PredefinedAtom::Undefined => "undefined",
515 PredefinedAtom::NumberLower => "number",
516 PredefinedAtom::BooleanLower => "boolean",
517 PredefinedAtom::StringLower => "string",
518 PredefinedAtom::ObjectLower => "object",
519 PredefinedAtom::SymbolLower => "symbol",
520 PredefinedAtom::Integer => "integer",
521 PredefinedAtom::Unknown => "unknown",
522 PredefinedAtom::ArgumentsLower => "arguments",
523 PredefinedAtom::Callee => "callee",
524 PredefinedAtom::Caller => "caller",
525 PredefinedAtom::LastIndex => "lastIndex",
526 PredefinedAtom::Target => "target",
527 PredefinedAtom::Index => "index",
528 PredefinedAtom::Input => "input",
529 PredefinedAtom::DefineProperties => "defineProperties",
530 PredefinedAtom::Apply => "apply",
531 PredefinedAtom::Join => "join",
532 PredefinedAtom::Concat => "concat",
533 PredefinedAtom::Split => "split",
534 PredefinedAtom::Construct => "construct",
535 PredefinedAtom::GetPrototypeOf => "getPrototypeOf",
536 PredefinedAtom::SetPrototypeOf => "setPrototypeOf",
537 PredefinedAtom::IsExtensible => "isExtensible",
538 PredefinedAtom::PreventExtensions => "preventExtensions",
539 PredefinedAtom::Has => "has",
540 PredefinedAtom::DeleteProperty => "deleteProperty",
541 PredefinedAtom::DefineProperty => "defineProperty",
542 PredefinedAtom::GetOwnPropertyDescriptor => "getOwnPropertyDescriptor",
543 PredefinedAtom::OwnKeys => "ownKeys",
544 PredefinedAtom::Add => "add",
545 PredefinedAtom::Done => "done",
546 PredefinedAtom::Next => "next",
547 PredefinedAtom::Values => "values",
548 PredefinedAtom::Source => "source",
549 PredefinedAtom::Flags => "flags",
550 PredefinedAtom::Global => "global",
551 PredefinedAtom::Unicode => "unicode",
552 PredefinedAtom::Raw => "raw",
553 PredefinedAtom::NewTarget => "new.target",
554 PredefinedAtom::ThisActiveFunc => "this.active_func",
555 PredefinedAtom::HomeObject => "<home_object>",
556 PredefinedAtom::ComputedField => "<computed_field>",
557 PredefinedAtom::StaticComputedField => "<static_computed_field>",
558 PredefinedAtom::ClassFieldsInit => "<class_fields_init>",
559 PredefinedAtom::Brand => "<brand>",
560 PredefinedAtom::HashConstructor => "#constructor",
561 PredefinedAtom::As => "as",
562 PredefinedAtom::From => "from",
563 PredefinedAtom::Meta => "meta",
564 PredefinedAtom::StarDefault => "*default*",
565 PredefinedAtom::Star => "*",
566 PredefinedAtom::Module => "Module",
567 PredefinedAtom::Then => "then",
568 PredefinedAtom::Resolve => "resolve",
569 PredefinedAtom::Reject => "reject",
570 PredefinedAtom::PromiseLower => "promise",
571 PredefinedAtom::ProxyLower => "proxy",
572 PredefinedAtom::Revoke => "revoke",
573 PredefinedAtom::Async => "async",
574 PredefinedAtom::Exec => "exec",
575 PredefinedAtom::Groups => "groups",
576 PredefinedAtom::Status => "status",
577 PredefinedAtom::Reason => "reason",
578 PredefinedAtom::GlobalThis => "globalThis",
579 PredefinedAtom::Bigint => "bigint",
580 PredefinedAtom::ToJSON => "toJSON",
581 PredefinedAtom::MaxByteLength => "maxByteLength",
582 PredefinedAtom::Object => "Object",
583 PredefinedAtom::Array => "Array",
584 PredefinedAtom::Error => "Error",
585 PredefinedAtom::Number => "Number",
586 PredefinedAtom::String => "String",
587 PredefinedAtom::Boolean => "Boolean",
588 PredefinedAtom::Symbol => "Symbol",
589 PredefinedAtom::Arguments => "Arguments",
590 PredefinedAtom::Math => "Math",
591 PredefinedAtom::JSON => "JSON",
592 PredefinedAtom::Date => "Date",
593 PredefinedAtom::Function => "Function",
594 PredefinedAtom::GeneratorFunction => "GeneratorFunction",
595 PredefinedAtom::ForInIterator => "ForInIterator",
596 PredefinedAtom::Iterator => "Iterator",
597 PredefinedAtom::RegExp => "RegExp",
598 PredefinedAtom::ArrayBuffer => "ArrayBuffer",
599 PredefinedAtom::SharedArrayBuffer => "SharedArrayBuffer",
600 PredefinedAtom::Uint8ClampedArray => "Uint8ClampedArray",
601 PredefinedAtom::Int8Array => "Int8Array",
602 PredefinedAtom::Uint8Array => "Uint8Array",
603 PredefinedAtom::Int16Array => "Int16Array",
604 PredefinedAtom::Uint16Array => "Uint16Array",
605 PredefinedAtom::Int32Array => "Int32Array",
606 PredefinedAtom::Uint32Array => "Uint32Array",
607 PredefinedAtom::BigInt64Array => "BigInt64Array",
608 PredefinedAtom::BigUint64Array => "BigUint64Array",
609 #[cfg(feature = "half")]
610 PredefinedAtom::Float16Array => "Float16Array",
611 PredefinedAtom::Float32Array => "Float32Array",
612 PredefinedAtom::Float64Array => "Float64Array",
613 PredefinedAtom::DataView => "DataView",
614 PredefinedAtom::BigInt => "BigInt",
615 PredefinedAtom::Map => "Map",
616 PredefinedAtom::Set => "Set",
617 PredefinedAtom::WeakMap => "WeakMap",
618 PredefinedAtom::WeakSet => "WeakSet",
619 PredefinedAtom::MapIterator => "Map Iterator",
620 PredefinedAtom::SetIterator => "Set Iterator",
621 PredefinedAtom::ArrayIterator => "Array Iterator",
622 PredefinedAtom::StringIterator => "String Iterator",
623 PredefinedAtom::RegExpStringIterator => "RegExp String Iterator",
624 PredefinedAtom::Generator => "Generator",
625 PredefinedAtom::Proxy => "Proxy",
626 PredefinedAtom::Promise => "Promise",
627 PredefinedAtom::PromiseResolveFunction => "PromiseResolveFunction",
628 PredefinedAtom::PromiseRejectFunction => "PromiseRejectFunction",
629 PredefinedAtom::AsyncFunction => "AsyncFunction",
630 PredefinedAtom::AsyncFunctionResolve => "AsyncFunctionResolve",
631 PredefinedAtom::AsyncFunctionReject => "AsyncFunctionReject",
632 PredefinedAtom::AsyncGeneratorFunction => "AsyncGeneratorFunction",
633 PredefinedAtom::AsyncGenerator => "AsyncGenerator",
634 PredefinedAtom::EvalError => "EvalError",
635 PredefinedAtom::RangeError => "RangeError",
636 PredefinedAtom::ReferenceError => "ReferenceError",
637 PredefinedAtom::SyntaxError => "SyntaxError",
638 PredefinedAtom::TypeError => "TypeError",
639 PredefinedAtom::URIError => "URIError",
640 PredefinedAtom::InternalError => "InternalError",
641 PredefinedAtom::DOMException => "DOMException",
642 PredefinedAtom::SymbolAsyncIterator => "Symbol.asyncIterator",
643 PredefinedAtom::SymbolIterator => "Symbol.iterator",
644 PredefinedAtom::SymbolMatch => "Symbol.match",
645 PredefinedAtom::SymbolMatchAll => "Symbol.matchAll",
646 PredefinedAtom::SymbolReplace => "Symbol.replace",
647 PredefinedAtom::SymbolSearch => "Symbol.search",
648 PredefinedAtom::SymbolSplit => "Symbol.split",
649 PredefinedAtom::SymbolToPrimitive => "Symbol.toPrimitive",
650 PredefinedAtom::SymbolToStringTag => "Symbol.toStringTag",
651 PredefinedAtom::SymbolIsConcatSpreadable => "Symbol.isConcatSpreadable",
652 PredefinedAtom::SymbolHasInstance => "Symbol.hasInstance",
653 PredefinedAtom::SymbolSpecies => "Symbol.species",
654 PredefinedAtom::SymbolUnscopables => "Symbol.unscopables",
655 }
656 }
657}
658
659#[cfg(test)]
660mod test {
661 use crate::{Atom, Context, IntoAtom, Runtime};
662
663 use super::PredefinedAtom;
664 #[test]
665 fn string_correct() {
666 static ALL_PREDEFS: &[PredefinedAtom] = &[
667 PredefinedAtom::Null,
668 PredefinedAtom::False,
669 PredefinedAtom::True,
670 PredefinedAtom::If,
671 PredefinedAtom::Else,
672 PredefinedAtom::Return,
673 PredefinedAtom::Var,
674 PredefinedAtom::This,
675 PredefinedAtom::Delete,
676 PredefinedAtom::Void,
677 PredefinedAtom::Typeof,
678 PredefinedAtom::New,
679 PredefinedAtom::In,
680 PredefinedAtom::Instanceof,
681 PredefinedAtom::Do,
682 PredefinedAtom::While,
683 PredefinedAtom::For,
684 PredefinedAtom::Break,
685 PredefinedAtom::Continue,
686 PredefinedAtom::Switch,
687 PredefinedAtom::Case,
688 PredefinedAtom::Default,
689 PredefinedAtom::Throw,
690 PredefinedAtom::Try,
691 PredefinedAtom::Catch,
692 PredefinedAtom::Finally,
693 PredefinedAtom::FunctionKw,
694 PredefinedAtom::Debugger,
695 PredefinedAtom::With,
696 PredefinedAtom::Class,
697 PredefinedAtom::Const,
698 PredefinedAtom::Enum,
699 PredefinedAtom::Export,
700 PredefinedAtom::Extends,
701 PredefinedAtom::Import,
702 PredefinedAtom::Super,
703 PredefinedAtom::Implements,
704 PredefinedAtom::Interface,
705 PredefinedAtom::Let,
706 PredefinedAtom::Package,
707 PredefinedAtom::Private,
708 PredefinedAtom::Protected,
709 PredefinedAtom::Public,
710 PredefinedAtom::Static,
711 PredefinedAtom::Yield,
712 PredefinedAtom::Await,
713 PredefinedAtom::Empty,
714 PredefinedAtom::Length,
715 PredefinedAtom::Message,
716 PredefinedAtom::Errors,
717 PredefinedAtom::Stack,
718 PredefinedAtom::Name,
719 PredefinedAtom::ToString,
720 PredefinedAtom::ToLocaleString,
721 PredefinedAtom::ValueOf,
722 PredefinedAtom::Eval,
723 PredefinedAtom::Prototype,
724 PredefinedAtom::Constructor,
725 PredefinedAtom::Configurable,
726 PredefinedAtom::Writable,
727 PredefinedAtom::Enumerable,
728 PredefinedAtom::Value,
729 PredefinedAtom::Getter,
730 PredefinedAtom::Setter,
731 PredefinedAtom::Of,
732 PredefinedAtom::UnderscoreProto,
733 PredefinedAtom::Undefined,
734 PredefinedAtom::NumberLower,
735 PredefinedAtom::BooleanLower,
736 PredefinedAtom::StringLower,
737 PredefinedAtom::ObjectLower,
738 PredefinedAtom::SymbolLower,
739 PredefinedAtom::Integer,
740 PredefinedAtom::Unknown,
741 PredefinedAtom::ArgumentsLower,
742 PredefinedAtom::Callee,
743 PredefinedAtom::Caller,
744 PredefinedAtom::LastIndex,
745 PredefinedAtom::Target,
746 PredefinedAtom::Index,
747 PredefinedAtom::Input,
748 PredefinedAtom::DefineProperties,
749 PredefinedAtom::Apply,
750 PredefinedAtom::Join,
751 PredefinedAtom::Concat,
752 PredefinedAtom::Split,
753 PredefinedAtom::Construct,
754 PredefinedAtom::GetPrototypeOf,
755 PredefinedAtom::SetPrototypeOf,
756 PredefinedAtom::IsExtensible,
757 PredefinedAtom::PreventExtensions,
758 PredefinedAtom::Has,
759 PredefinedAtom::DeleteProperty,
760 PredefinedAtom::DefineProperty,
761 PredefinedAtom::GetOwnPropertyDescriptor,
762 PredefinedAtom::OwnKeys,
763 PredefinedAtom::Add,
764 PredefinedAtom::Done,
765 PredefinedAtom::Next,
766 PredefinedAtom::Values,
767 PredefinedAtom::Source,
768 PredefinedAtom::Flags,
769 PredefinedAtom::Global,
770 PredefinedAtom::Unicode,
771 PredefinedAtom::Raw,
772 PredefinedAtom::NewTarget,
773 PredefinedAtom::ThisActiveFunc,
774 PredefinedAtom::HomeObject,
775 PredefinedAtom::ComputedField,
776 PredefinedAtom::StaticComputedField,
777 PredefinedAtom::ClassFieldsInit,
778 PredefinedAtom::Brand,
779 PredefinedAtom::HashConstructor,
780 PredefinedAtom::As,
781 PredefinedAtom::From,
782 PredefinedAtom::Meta,
783 PredefinedAtom::StarDefault,
784 PredefinedAtom::Star,
785 PredefinedAtom::Module,
786 PredefinedAtom::Then,
787 PredefinedAtom::Resolve,
788 PredefinedAtom::Reject,
789 PredefinedAtom::PromiseLower,
790 PredefinedAtom::ProxyLower,
791 PredefinedAtom::Revoke,
792 PredefinedAtom::Async,
793 PredefinedAtom::Exec,
794 PredefinedAtom::Groups,
795 PredefinedAtom::Status,
796 PredefinedAtom::Reason,
797 PredefinedAtom::GlobalThis,
798 PredefinedAtom::Bigint,
799 PredefinedAtom::ToJSON,
800 PredefinedAtom::Object,
801 PredefinedAtom::Array,
802 PredefinedAtom::Error,
803 PredefinedAtom::Number,
804 PredefinedAtom::String,
805 PredefinedAtom::Boolean,
806 PredefinedAtom::Symbol,
807 PredefinedAtom::Arguments,
808 PredefinedAtom::Math,
809 PredefinedAtom::JSON,
810 PredefinedAtom::Date,
811 PredefinedAtom::Function,
812 PredefinedAtom::GeneratorFunction,
813 PredefinedAtom::ForInIterator,
814 PredefinedAtom::RegExp,
815 PredefinedAtom::ArrayBuffer,
816 PredefinedAtom::SharedArrayBuffer,
817 PredefinedAtom::Uint8ClampedArray,
818 PredefinedAtom::Int8Array,
819 PredefinedAtom::Uint8Array,
820 PredefinedAtom::Int16Array,
821 PredefinedAtom::Uint16Array,
822 PredefinedAtom::Int32Array,
823 PredefinedAtom::Uint32Array,
824 PredefinedAtom::BigInt64Array,
825 PredefinedAtom::BigUint64Array,
826 PredefinedAtom::Float32Array,
827 PredefinedAtom::Float64Array,
828 PredefinedAtom::DataView,
829 PredefinedAtom::BigInt,
830 PredefinedAtom::Map,
831 PredefinedAtom::Set,
832 PredefinedAtom::WeakMap,
833 PredefinedAtom::WeakSet,
834 PredefinedAtom::MapIterator,
835 PredefinedAtom::SetIterator,
836 PredefinedAtom::ArrayIterator,
837 PredefinedAtom::StringIterator,
838 PredefinedAtom::RegExpStringIterator,
839 PredefinedAtom::Generator,
840 PredefinedAtom::Proxy,
841 PredefinedAtom::Promise,
842 PredefinedAtom::PromiseResolveFunction,
843 PredefinedAtom::PromiseRejectFunction,
844 PredefinedAtom::AsyncFunction,
845 PredefinedAtom::AsyncFunctionResolve,
846 PredefinedAtom::AsyncFunctionReject,
847 PredefinedAtom::AsyncGeneratorFunction,
848 PredefinedAtom::AsyncGenerator,
849 PredefinedAtom::EvalError,
850 PredefinedAtom::RangeError,
851 PredefinedAtom::ReferenceError,
852 PredefinedAtom::SyntaxError,
853 PredefinedAtom::TypeError,
854 PredefinedAtom::URIError,
855 PredefinedAtom::InternalError,
856 PredefinedAtom::DOMException,
857 PredefinedAtom::SymbolAsyncIterator,
858 PredefinedAtom::SymbolIterator,
859 PredefinedAtom::SymbolMatch,
860 PredefinedAtom::SymbolMatchAll,
861 PredefinedAtom::SymbolReplace,
862 PredefinedAtom::SymbolSearch,
863 PredefinedAtom::SymbolSplit,
864 PredefinedAtom::SymbolToStringTag,
865 PredefinedAtom::SymbolIsConcatSpreadable,
866 PredefinedAtom::SymbolHasInstance,
867 PredefinedAtom::SymbolSpecies,
868 PredefinedAtom::SymbolUnscopables,
869 ];
870
871 let rt = Runtime::new().unwrap();
872 let context = Context::full(&rt).unwrap();
873 context.with(|ctx| {
874 for predef in ALL_PREDEFS {
875 let atom = predef.into_atom(&ctx).unwrap();
876 assert_eq!(atom.to_string().unwrap().as_str(), predef.to_str());
877
878 if predef.is_symbol() {
880 continue;
881 }
882
883 let from_str = Atom::from_str(ctx.clone(), predef.to_str()).unwrap();
884 assert_eq!(
885 atom,
886 from_str,
887 "Atom `{}` from str and from redefined not equal",
888 predef.to_str()
889 )
890 }
891 })
892 }
893}