Skip to content

Commit 445e822

Browse files
committed
C#: Generate signal event with the same accessibility as the delegate
1 parent 2d6af00 commit 445e822

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ExtensionMethods.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,32 @@ public static string GetDeclarationKeyword(this INamedTypeSymbol namedTypeSymbol
155155
};
156156
}
157157

158+
public static string GetAccessibilityKeyword(this INamedTypeSymbol namedTypeSymbol)
159+
{
160+
if (namedTypeSymbol.DeclaredAccessibility == Accessibility.NotApplicable)
161+
{
162+
// Accessibility not specified. Get the default accessibility.
163+
return namedTypeSymbol.ContainingSymbol switch
164+
{
165+
null or INamespaceSymbol => "internal",
166+
ITypeSymbol { TypeKind: TypeKind.Class or TypeKind.Struct } => "private",
167+
ITypeSymbol { TypeKind: TypeKind.Interface } => "public",
168+
_ => "",
169+
};
170+
}
171+
172+
return namedTypeSymbol.DeclaredAccessibility switch
173+
{
174+
Accessibility.Private => "private",
175+
Accessibility.Protected => "protected",
176+
Accessibility.Internal => "internal",
177+
Accessibility.ProtectedAndInternal => "private",
178+
Accessibility.ProtectedOrInternal => "private",
179+
Accessibility.Public => "public",
180+
_ => "",
181+
};
182+
}
183+
158184
public static string NameWithTypeParameters(this INamedTypeSymbol symbol)
159185
{
160186
return symbol.IsGenericType ?

modules/mono/editor/Godot.NET.Sdk/Godot.SourceGenerators/ScriptSignalsGenerator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ void AppendPartialContainingTypeDeclarations(INamedTypeSymbol? containingType)
276276
source.Append(
277277
$" /// <inheritdoc cref=\"{signalDelegate.DelegateSymbol.FullQualifiedNameIncludeGlobal()}\"/>\n");
278278

279-
source.Append(" public event ")
279+
source.Append($" {signalDelegate.DelegateSymbol.GetAccessibilityKeyword()} event ")
280280
.Append(signalDelegate.DelegateSymbol.FullQualifiedNameIncludeGlobal())
281281
.Append(" @")
282282
.Append(signalName)

0 commit comments

Comments
 (0)