mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:42:43 +00:00 
			
		
		
		
	LibJS: Implement IsRegExp abstract operation
This is needed by various String.prototype operations, as well as the RegExp constructor.
This commit is contained in:
		
							parent
							
								
									d8899ea65b
								
							
						
					
					
						commit
						43f948b357
					
				
					 2 changed files with 17 additions and 0 deletions
				
			
		|  | @ -102,6 +102,22 @@ Function& Value::as_function() | ||||||
|     return static_cast<Function&>(as_object()); |     return static_cast<Function&>(as_object()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | bool Value::is_regexp(GlobalObject& global_object) const | ||||||
|  | { | ||||||
|  |     // 7.2.8 IsRegExp, https://tc39.es/ecma262/#sec-isregexp
 | ||||||
|  | 
 | ||||||
|  |     if (!is_object()) | ||||||
|  |         return false; | ||||||
|  | 
 | ||||||
|  |     auto matcher = as_object().get(global_object.vm().well_known_symbol_match()); | ||||||
|  |     if (global_object.vm().exception()) | ||||||
|  |         return false; | ||||||
|  |     if (!matcher.is_empty() && !matcher.is_undefined()) | ||||||
|  |         return matcher.to_boolean(); | ||||||
|  | 
 | ||||||
|  |     return as_object().is_regexp_object(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| String Value::to_string_without_side_effects() const | String Value::to_string_without_side_effects() const | ||||||
| { | { | ||||||
|     switch (m_type) { |     switch (m_type) { | ||||||
|  |  | ||||||
|  | @ -76,6 +76,7 @@ public: | ||||||
|     bool is_cell() const { return is_string() || is_accessor() || is_object() || is_bigint() || is_symbol() || is_native_property(); } |     bool is_cell() const { return is_string() || is_accessor() || is_object() || is_bigint() || is_symbol() || is_native_property(); } | ||||||
|     bool is_array() const; |     bool is_array() const; | ||||||
|     bool is_function() const; |     bool is_function() const; | ||||||
|  |     bool is_regexp(GlobalObject& global_object) const; | ||||||
| 
 | 
 | ||||||
|     bool is_nan() const { return is_number() && __builtin_isnan(as_double()); } |     bool is_nan() const { return is_number() && __builtin_isnan(as_double()); } | ||||||
|     bool is_infinity() const { return is_number() && __builtin_isinf(as_double()); } |     bool is_infinity() const { return is_number() && __builtin_isinf(as_double()); } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Xavier Cooney
						Xavier Cooney