Handle initializer case in FullyQualifiedSyntax

- Prevents source generators from fully qualifying names being assigned to within an object initializer
- Adds ResourceTextureWithInitializer test cases to ExportedFields and ExportedProperties

Co-Authored-By: Paul Joannon <437025+paulloz@users.noreply.github.com>
Co-Authored-By: Paviel Kraskoŭski <kraskovskiy94@gmail.com>
This commit is contained in:
AbsoluteMoose
2025-11-16 22:46:00 -06:00
parent ef34c3d534
commit 3b4b0c530e
7 changed files with 44 additions and 6 deletions
@@ -212,11 +212,17 @@ namespace Godot.SourceGenerators
private static void FullQualifiedSyntax(SyntaxNode node, SemanticModel sm, StringBuilder sb, bool isFirstNode)
{
if (node is NameSyntax ns && (isFirstNode || node.Parent is not MemberAccessExpressionSyntax))
if (node is NameSyntax ns)
{
SymbolInfo nameInfo = sm.GetSymbolInfo(ns);
sb.Append(nameInfo.Symbol?.ToDisplayString(FullyQualifiedFormatIncludeGlobal) ?? ns.ToString());
return;
bool isMemberAccess = !isFirstNode && node.Parent is MemberAccessExpressionSyntax;
bool isInitializer = isFirstNode && node.Parent is AssignmentExpressionSyntax { Parent: InitializerExpressionSyntax };
if (!isMemberAccess && !isInitializer)
{
SymbolInfo nameInfo = sm.GetSymbolInfo(ns);
sb.Append(nameInfo.Symbol?.ToDisplayString(FullyQualifiedFormatIncludeGlobal) ?? ns.ToString());
return;
}
}
bool innerIsFirstNode = true;