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:
Rémi Verschelde 2023-08-14 15:28:57 +02:00
commit 6b5e44f3ca
No known key found for this signature in database
GPG key ID: C3336907360768E1
3 changed files with 29 additions and 0 deletions

View file

@ -3469,6 +3469,9 @@ void GDScriptAnalyzer::reduce_identifier_from_base(GDScriptParser::IdentifierNod
for (GDScriptParser::ClassNode *script_class : script_classes) {
if (p_base == nullptr && script_class->identifier && script_class->identifier->name == name) {
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;
}

View file

@ -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)

View file

@ -0,0 +1,5 @@
GDTEST_OK
true
true
true
true