mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	Merge pull request #56830 from strank/parent-signals
This commit is contained in:
		
						commit
						79bbe57244
					
				
					 1 changed files with 13 additions and 8 deletions
				
			
		|  | @ -294,16 +294,21 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code | ||||||
| 
 | 
 | ||||||
| 			// Try signals and methods (can be made callables).
 | 			// Try signals and methods (can be made callables).
 | ||||||
| 			{ | 			{ | ||||||
| 				if (codegen.class_node->members_indices.has(identifier)) { | 				// Search upwards through parent classes:
 | ||||||
| 					const GDScriptParser::ClassNode::Member &member = codegen.class_node->members[codegen.class_node->members_indices[identifier]]; | 				const GDScriptParser::ClassNode *base_class = codegen.class_node; | ||||||
| 					if (member.type == GDScriptParser::ClassNode::Member::FUNCTION || member.type == GDScriptParser::ClassNode::Member::SIGNAL) { | 				while (base_class != nullptr) { | ||||||
| 						// Get like it was a property.
 | 					if (base_class->has_member(identifier)) { | ||||||
| 						GDScriptCodeGenerator::Address temp = codegen.add_temporary(); // TODO: Get type here.
 | 						const GDScriptParser::ClassNode::Member &member = base_class->get_member(identifier); | ||||||
| 						GDScriptCodeGenerator::Address self(GDScriptCodeGenerator::Address::SELF); | 						if (member.type == GDScriptParser::ClassNode::Member::FUNCTION || member.type == GDScriptParser::ClassNode::Member::SIGNAL) { | ||||||
|  | 							// Get like it was a property.
 | ||||||
|  | 							GDScriptCodeGenerator::Address temp = codegen.add_temporary(); // TODO: Get type here.
 | ||||||
|  | 							GDScriptCodeGenerator::Address self(GDScriptCodeGenerator::Address::SELF); | ||||||
| 
 | 
 | ||||||
| 						gen->write_get_named(temp, identifier, self); | 							gen->write_get_named(temp, identifier, self); | ||||||
| 						return temp; | 							return temp; | ||||||
|  | 						} | ||||||
| 					} | 					} | ||||||
|  | 					base_class = base_class->base_type.class_type; | ||||||
| 				} | 				} | ||||||
| 
 | 
 | ||||||
| 				// Try in native base.
 | 				// Try in native base.
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Rémi Verschelde
						Rémi Verschelde