diff --git a/SourceGenerators/HostingGatewayEventsGenerator/HostingGatewayEventsGenerator.cs b/SourceGenerators/HostingGatewayEventsGenerator/HostingGatewayEventsGenerator.cs index 535060e4..a46c5b4b 100644 --- a/SourceGenerators/HostingGatewayEventsGenerator/HostingGatewayEventsGenerator.cs +++ b/SourceGenerators/HostingGatewayEventsGenerator/HostingGatewayEventsGenerator.cs @@ -117,11 +117,15 @@ private void WriteGatewayHandlerInterfaces(StringWriter stringWriter, IEventSymb stringWriter.WriteLine("{"); + var eventType = (INamedTypeSymbol)eventSymbol.Type; + var hasArg = eventType.Arity is 2; + + WriteHandleAsyncXmlDoc(stringWriter, false, hasArg); + stringWriter.WriteIndentation(1); stringWriter.Write("public global::System.Threading.Tasks.ValueTask HandleAsync("); - var eventType = (INamedTypeSymbol)eventSymbol.Type; - if (eventType.Arity is 2) + if (hasArg) { stringWriter.Write(eventType.TypeArguments[0].ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)); stringWriter.Write(" arg"); @@ -141,10 +145,12 @@ private void WriteGatewayHandlerInterfaces(StringWriter stringWriter, IEventSymb stringWriter.WriteLine("{"); + WriteHandleAsyncXmlDoc(stringWriter, true, hasArg); + stringWriter.WriteIndentation(1); stringWriter.Write("public global::System.Threading.Tasks.ValueTask HandleAsync(global::NetCord.Gateway.GatewayClient client"); - if (eventType.Arity is 2) + if (hasArg) { stringWriter.Write(", "); stringWriter.Write(eventType.TypeArguments[0].ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat)); @@ -157,6 +163,30 @@ private void WriteGatewayHandlerInterfaces(StringWriter stringWriter, IEventSymb } } + private void WriteHandleAsyncXmlDoc(StringWriter stringWriter, bool hasClient, bool hasArg) + { + stringWriter.WriteIndentation(1); + stringWriter.WriteLine("/// "); + + stringWriter.WriteIndentation(1); + stringWriter.WriteLine("/// Handles the gateway event."); + + stringWriter.WriteIndentation(1); + stringWriter.WriteLine("/// "); + + if (hasClient) + { + stringWriter.WriteIndentation(1); + stringWriter.WriteLine("/// The gateway client that represents the shard that received the event."); + } + + if (hasArg) + { + stringWriter.WriteIndentation(1); + stringWriter.WriteLine("/// The event argument."); + } + } + private string GenerateHandlerRegistrationMethods(IEventSymbol[] events) { StringWriter stringWriter = new();