~ruther/NosSmooth

e094b5c47df6eb0dedf41f5b113d4eaccb969861 — František Boháček 2 years ago 49b1977
feat(packets): prevent duplicit usings inside source generator
1 files changed, 9 insertions(+), 6 deletions(-)

M Packets/NosSmooth.PacketSerializersGenerator/PacketConverterGenerator.cs
M Packets/NosSmooth.PacketSerializersGenerator/PacketConverterGenerator.cs => Packets/NosSmooth.PacketSerializersGenerator/PacketConverterGenerator.cs +9 -6
@@ 41,18 41,21 @@ public class PacketConverterGenerator
    {
        var usings = _packetInfo.PacketRecord.SyntaxTree.GetRoot()
            .DescendantNodes()
            .OfType<UsingDirectiveSyntax>();
        var usingsString = string.Join("\n", usings.Select(x => x.ToString()));
            .OfType<UsingDirectiveSyntax>()
            .Select(x => x.ToString())
            .ToList();
        usings.Add($"using {_packetInfo.Namespace};");
        usings.Add("using NosSmooth.PacketSerializer.Abstractions.Errors;");
        usings.Add("using NosSmooth.PacketSerializer.Abstractions;");
        usings.Add("using Remora.Results;");

        var usingsString = string.Join("\n", usings.Distinct());
        textWriter.WriteLine
        (
            @$"// <auto-generated/>
#nullable enable
#pragma warning disable 1591

using {_packetInfo.Namespace};
using NosSmooth.PacketSerializer.Abstractions.Errors;
using NosSmooth.PacketSerializer.Abstractions;
using Remora.Results;
{usingsString}

namespace {_packetInfo.Namespace}.Generated;