You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-07 12:30:27 +00:00
GDScript: Fix regression with native signal not found
This commit is contained in:
@@ -245,6 +245,8 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
|
|||||||
|
|
||||||
// MEMBERS.
|
// MEMBERS.
|
||||||
case GDScriptParser::IdentifierNode::MEMBER_VARIABLE:
|
case GDScriptParser::IdentifierNode::MEMBER_VARIABLE:
|
||||||
|
case GDScriptParser::IdentifierNode::MEMBER_FUNCTION:
|
||||||
|
case GDScriptParser::IdentifierNode::MEMBER_SIGNAL:
|
||||||
case GDScriptParser::IdentifierNode::INHERITED_VARIABLE: {
|
case GDScriptParser::IdentifierNode::INHERITED_VARIABLE: {
|
||||||
// Try class members.
|
// Try class members.
|
||||||
if (_is_class_member_property(codegen, identifier)) {
|
if (_is_class_member_property(codegen, identifier)) {
|
||||||
@@ -271,11 +273,9 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} break;
|
|
||||||
case GDScriptParser::IdentifierNode::MEMBER_FUNCTION:
|
|
||||||
case GDScriptParser::IdentifierNode::MEMBER_SIGNAL: {
|
|
||||||
// Try methods and signals (can be Callable and Signal).
|
|
||||||
|
|
||||||
|
// Try methods and signals (can be Callable and Signal).
|
||||||
|
{
|
||||||
// Search upwards through parent classes:
|
// Search upwards through parent classes:
|
||||||
const GDScriptParser::ClassNode *base_class = codegen.class_node;
|
const GDScriptParser::ClassNode *base_class = codegen.class_node;
|
||||||
while (base_class != nullptr) {
|
while (base_class != nullptr) {
|
||||||
@@ -311,6 +311,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
|
|||||||
gen->write_get_named(temp, identifier, self);
|
gen->write_get_named(temp, identifier, self);
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} break;
|
} break;
|
||||||
case GDScriptParser::IdentifierNode::MEMBER_CONSTANT:
|
case GDScriptParser::IdentifierNode::MEMBER_CONSTANT:
|
||||||
case GDScriptParser::IdentifierNode::MEMBER_CLASS: {
|
case GDScriptParser::IdentifierNode::MEMBER_CLASS: {
|
||||||
@@ -319,6 +320,7 @@ GDScriptCodeGenerator::Address GDScriptCompiler::_parse_expression(CodeGen &code
|
|||||||
while (owner) {
|
while (owner) {
|
||||||
GDScript *scr = owner;
|
GDScript *scr = owner;
|
||||||
GDScriptNativeClass *nc = nullptr;
|
GDScriptNativeClass *nc = nullptr;
|
||||||
|
|
||||||
while (scr) {
|
while (scr) {
|
||||||
if (scr->constants.has(identifier)) {
|
if (scr->constants.has(identifier)) {
|
||||||
return codegen.add_constant(scr->constants[identifier]); // TODO: Get type here.
|
return codegen.add_constant(scr->constants[identifier]); // TODO: Get type here.
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# GH-80157
|
||||||
|
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
func f():
|
||||||
|
pass
|
||||||
|
|
||||||
|
signal s()
|
||||||
|
|
||||||
|
func test():
|
||||||
|
print(f)
|
||||||
|
print(s)
|
||||||
|
print(get_child)
|
||||||
|
print(ready)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
GDTEST_OK
|
||||||
|
Node::f
|
||||||
|
Node::[signal]s
|
||||||
|
Node::get_child
|
||||||
|
Node::[signal]ready
|
||||||
Reference in New Issue
Block a user