~ruther/NosSmooth

2f616e54c207b5258525b65810911e3ced7c2200 — František Boháček 3 years ago ce641b8
feat: return diagnostic error if there is same packet index twice
1 files changed, 18 insertions(+), 1 deletions(-)

M Core/NosSmooth.PacketSerializersGenerator/PacketSerializerGenerator.cs
M Core/NosSmooth.PacketSerializersGenerator/PacketSerializerGenerator.cs => Core/NosSmooth.PacketSerializersGenerator/PacketSerializerGenerator.cs +18 -1
@@ 302,7 302,7 @@ private IResultError? CheckDeserializationResult<T>(Result<T> result, string pro

    private IError? GenerateDeserializer(IndentedTextWriter textWriter, RecordDeclarationSyntax packetClass, List<ParameterInfo> parameters)
    {
        var lastIndex = parameters.FirstOrDefault()?.PacketIndex ?? 0;
        var lastIndex = (parameters.FirstOrDefault()?.PacketIndex ?? 0) - 1;
        bool skipped = false;
        foreach (var parameter in parameters)
        {


@@ 321,6 321,23 @@ private IResultError? CheckDeserializationResult<T>(Result<T> result, string pro
    return Result<{packetClass.Identifier.NormalizeWhitespace().ToFullString()}>.FromError(skipError, skipResult);
}}");
            }
            else if (skip < 0)
            {
                return new DiagnosticError
                (
                    "SG0004",
                    "Same packet index",
                    "There were two parameters of the same packet index {0} on property {1} in packet {2}, that is not supported.",
                    parameter.Attribute.SyntaxTree,
                    parameter.Attribute.FullSpan,
                    new List<object?>(new[]
                    {
                        parameter.PacketIndex.ToString(),
                        parameter.Name,
                        packetClass.Identifier.NormalizeWhitespace().ToFullString()
                    })
                );
            }

            bool handled = false;
            foreach (var generator in _generators)

Do not follow this link