summaryrefslogtreecommitdiffstats
path: root/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-10-27 11:36:33 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-10-27 11:36:33 +0200
commitbf41c6bd34932439b23ff39d4f15eb88d19d2d0f (patch)
tree2683b82088821145c7aadaa825bfb0fdeb51a083 /modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs
parentd88ef223e323ad1a8ce7104b821411b09cedada7 (diff)
parentbfe1a93023c8a05226cc2aff13b946354e741415 (diff)
downloadredot-engine-bf41c6bd34932439b23ff39d4f15eb88d19d2d0f.tar.gz
Merge pull request #82918 from raulsntos/dotnet/only-node-can-export-node
C#: Report diagnostic for Node exports in a type that doesn't derive from Node
Diffstat (limited to 'modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs')
-rw-r--r--modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs18
1 files changed, 18 insertions, 0 deletions
diff --git a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs
index fc0bfbf084..253e24f092 100644
--- a/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs
+++ b/modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptPropertyDefValGenerator.cs
@@ -170,6 +170,15 @@ namespace Godot.SourceGenerators
continue;
}
+ if (marshalType == MarshalType.GodotObjectOrDerived)
+ {
+ if (!symbol.InheritsFrom("GodotSharp", "Godot.Node") &&
+ propertyType.InheritsFrom("GodotSharp", "Godot.Node"))
+ {
+ Common.ReportOnlyNodesShouldExportNodes(context, property);
+ }
+ }
+
var propertyDeclarationSyntax = property.DeclaringSyntaxReferences
.Select(r => r.GetSyntax() as PropertyDeclarationSyntax).FirstOrDefault();
@@ -265,6 +274,15 @@ namespace Godot.SourceGenerators
continue;
}
+ if (marshalType == MarshalType.GodotObjectOrDerived)
+ {
+ if (!symbol.InheritsFrom("GodotSharp", "Godot.Node") &&
+ fieldType.InheritsFrom("GodotSharp", "Godot.Node"))
+ {
+ Common.ReportOnlyNodesShouldExportNodes(context, field);
+ }
+ }
+
EqualsValueClauseSyntax? initializer = field.DeclaringSyntaxReferences
.Select(r => r.GetSyntax())
.OfType<VariableDeclaratorSyntax>()