Merge pull request #80510 from dalexeev/gds-fix-access-inner-class-from-inside
GDScript: Fix "Identifier not found" error when accessing inner class from inside
This commit is contained in:
commit
6b5e44f3ca
3 changed files with 29 additions and 0 deletions
|
@ -3469,6 +3469,9 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
|
||||||
for (GDScriptParser::ClassNode *script_class : script_classes) {
|
for (GDScriptParser::ClassNode *script_class : script_classes) {
|
||||||
if (p_base == nullptr && script_class->identifier && script_class->identifier->name == name) {
|
if (p_base == nullptr && script_class->identifier && script_class->identifier->name == name) {
|
||||||
reduce_identifier_from_base_set_class(p_identifier, script_class->get_datatype());
|
reduce_identifier_from_base_set_class(p_identifier, script_class->get_datatype());
|
||||||
|
if (script_class->outer != nullptr) {
|
||||||
|
p_identifier->source = GDScriptParser::IdentifierNode::MEMBER_CLASS;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
# GH-80508
|
||||||
|
|
||||||
|
class A:
|
||||||
|
func a():
|
||||||
|
return A.new()
|
||||||
|
func b():
|
||||||
|
return B.new()
|
||||||
|
|
||||||
|
class B:
|
||||||
|
func a():
|
||||||
|
return A.new()
|
||||||
|
func b():
|
||||||
|
return B.new()
|
||||||
|
|
||||||
|
func test():
|
||||||
|
var a := A.new()
|
||||||
|
var b := B.new()
|
||||||
|
print(a.a() is A)
|
||||||
|
print(a.b() is B)
|
||||||
|
print(b.a() is A)
|
||||||
|
print(b.b() is B)
|
|
@ -0,0 +1,5 @@
|
||||||
|
GDTEST_OK
|
||||||
|
true
|
||||||
|
true
|
||||||
|
true
|
||||||
|
true
|
Loading…
Reference in a new issue