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