mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:12:44 +00:00 
			
		
		
		
	LibJS: Convert Promise.prototype to be a PrototypeObject
This commit is contained in:
		
							parent
							
								
									b749194e70
								
							
						
					
					
						commit
						a41d0d23f9
					
				
					 2 changed files with 5 additions and 17 deletions
				
			
		|  | @ -17,7 +17,7 @@ | |||
| namespace JS { | ||||
| 
 | ||||
| PromisePrototype::PromisePrototype(GlobalObject& global_object) | ||||
|     : Object(*global_object.object_prototype()) | ||||
|     : PrototypeObject(*global_object.object_prototype()) | ||||
| { | ||||
| } | ||||
| 
 | ||||
|  | @ -35,22 +35,10 @@ void PromisePrototype::initialize(GlobalObject& global_object) | |||
|     define_direct_property(*vm.well_known_symbol_to_string_tag(), js_string(vm, vm.names.Promise.as_string()), Attribute::Configurable); | ||||
| } | ||||
| 
 | ||||
| static Promise* promise_from(VM& vm, GlobalObject& global_object) | ||||
| { | ||||
|     auto* this_object = vm.this_value(global_object).to_object(global_object); | ||||
|     if (!this_object) | ||||
|         return nullptr; | ||||
|     if (!is<Promise>(this_object)) { | ||||
|         vm.throw_exception<TypeError>(global_object, ErrorType::NotAnObjectOfType, vm.names.Promise); | ||||
|         return nullptr; | ||||
|     } | ||||
|     return static_cast<Promise*>(this_object); | ||||
| } | ||||
| 
 | ||||
| // 27.2.5.4 Promise.prototype.then ( onFulfilled, onRejected ), https://tc39.es/ecma262/#sec-promise.prototype.then
 | ||||
| JS_DEFINE_NATIVE_FUNCTION(PromisePrototype::then) | ||||
| { | ||||
|     auto* promise = promise_from(vm, global_object); | ||||
|     auto* promise = typed_this_object(global_object); | ||||
|     if (!promise) | ||||
|         return {}; | ||||
|     auto on_fulfilled = vm.argument(0); | ||||
|  |  | |||
|  | @ -6,12 +6,12 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <LibJS/Runtime/Object.h> | ||||
| #include <LibJS/Runtime/PrototypeObject.h> | ||||
| 
 | ||||
| namespace JS { | ||||
| 
 | ||||
| class PromisePrototype final : public Object { | ||||
|     JS_OBJECT(PromisePrototype, Object); | ||||
| class PromisePrototype final : public PrototypeObject<PromisePrototype, Promise> { | ||||
|     JS_PROTOTYPE_OBJECT(PromisePrototype, Promise, Promise); | ||||
| 
 | ||||
| public: | ||||
|     PromisePrototype(GlobalObject&); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Flynn
						Timothy Flynn