diff --git a/perf/bench/SampleTypes.cs b/perf/bench/SampleTypes.cs index f9816fdf..08f91d0e 100644 --- a/perf/bench/SampleTypes.cs +++ b/perf/bench/SampleTypes.cs @@ -85,7 +85,7 @@ public partial record LocationWrap : IDeserialize var typeDeserialize = deserializer.DeserializeType(s_fieldMap); int index; - while ((index = typeDeserialize.TryReadIndex(s_fieldMap)) != IDeserializeType.EndOfType) + while ((index = typeDeserialize.TryReadIndex(s_fieldMap, out _)) != IDeserializeType.EndOfType) { switch (index) { diff --git a/src/generator/DataMemberSymbol.cs b/src/generator/DataMemberSymbol.cs index 65f54e07..3aba63d1 100644 --- a/src/generator/DataMemberSymbol.cs +++ b/src/generator/DataMemberSymbol.cs @@ -93,6 +93,10 @@ static bool IsNullable(ISymbol symbol) public string Name => Symbol.Name; + public bool SkipDeserialize => _memberOptions.SkipDeserialize; + + public bool SkipSerialize => _memberOptions.SkipSerialize; + public bool ThrowIfMissing => _memberOptions.ThrowIfMissing; public bool ProvideAttributes => _memberOptions.ProvideAttributes; diff --git a/src/generator/Generator.Deserialize.cs b/src/generator/Generator.Deserialize.cs index 4608b322..901fb90b 100644 --- a/src/generator/Generator.Deserialize.cs +++ b/src/generator/Generator.Deserialize.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Diagnostics; using System.Linq; using System.Text; using Microsoft.CodeAnalysis; @@ -31,15 +32,163 @@ internal static (MemberDeclarationSyntax[], BaseListSyntax) GenerateDeserializeI )); // Generate members for ISerialize.Deserialize implementation - var method = GenerateDeserializeMethod(context, interfaceSyntax, receiverType); - var visitorType = GenerateVisitor(receiverType, typeSyntax, context, inProgress); - var members = new MemberDeclarationSyntax[] { method, visitorType }; + MemberDeclarationSyntax[] members; + if (receiverType.TypeKind == TypeKind.Enum) + { + var method = GenerateOldDeserializeMethod(context, interfaceSyntax, receiverType); + var visitorType = GenerateVisitor(receiverType, typeSyntax, context, inProgress); + members = [ method, visitorType ]; + } + else + { + var method = GenerateCustomDeserializeMethod(context, receiverType, typeSyntax, inProgress); + members = [ method ]; + } var baseList = BaseList(SeparatedList(new BaseTypeSyntax[] { SimpleBaseType(interfaceSyntax) })); return (members, baseList); } + /// + /// Generates + /// + /// T IDeserialize<T>.Deserialize(IDeserializer deserializer) + /// { + /// var _local1 = default!; + /// ... + /// var _localN = default!; + /// + /// var typeInfo = {typeName}SerdeTypeInfo.TypeInfo; + /// var typDeserializer = deserializer.DeserializeType(typeInfo); + /// int index; + /// while ((index = typeDeserialize.TryReadIndex(typeInfo)) != IDeserializeType.EndOfType) + /// { + /// switch (index) + /// { + /// } + /// } + /// } + /// + /// + private static MethodDeclarationSyntax GenerateCustomDeserializeMethod( + GeneratorExecutionContext context, + ITypeSymbol type, + TypeSyntax typeSyntax, + ImmutableList inProgress) + { + Debug.Assert(type.TypeKind != TypeKind.Enum); + + var members = SymbolUtilities.GetDataMembers(type, SerdeUsage.Both); + var typeFqn = typeSyntax.ToString(); + var assignedVarType = members.Count switch { + <= 8 => "byte", + <= 16 => "ushort", + <= 32 => "uint", + <= 64 => "ulong", + _ => throw new InvalidOperationException("Too many members in type") + }; + var (cases, locals, assignedMask) = InitCasesAndLocals(); + string typeCreationExpr = GenerateTypeCreation(context, typeFqn, type, members); + + const string typeInfoLocalName = "_l_typeInfo"; + const string indexLocalName = "_l_index_"; + + var methodText = $$""" +static {{typeFqn}} Serde.IDeserialize<{{typeFqn}}>.Deserialize(IDeserializer deserializer) +{ + {{locals}} + {{assignedVarType}} {{AssignedVarName}} = {{assignedMask}}; + + var {{typeInfoLocalName}} = {{type.Name}}SerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType({{typeInfoLocalName}}); + int {{indexLocalName}}; + while (({{indexLocalName}} = typeDeserialize.TryReadIndex({{typeInfoLocalName}}, out var _l_errorName)) != IDeserializeType.EndOfType) + { + switch ({{indexLocalName}}) + { +{{cases}} + } + } + {{typeCreationExpr}} + return newType; +} +"""; + return (MethodDeclarationSyntax)ParseMemberDeclaration(methodText)!; + + (string Cases, string Locals, string AssignedMask) InitCasesAndLocals() + { + var casesBuilder = new StringBuilder(); + var localsBuilder = new StringBuilder(); + long assignedMaskValue = 0; + for (int i = 0; i < members.Count; i++) + { + if (members[i].SkipDeserialize) + { + continue; + } + + var m = members[i]; + string wrapperName; + var memberType = m.Type.WithNullableAnnotation(m.NullableAnnotation).ToDisplayString(); + if (TryGetExplicitWrapper(m, context, SerdeUsage.Deserialize, inProgress) is { } explicitWrap) + { + wrapperName = explicitWrap.ToString(); + } + else if (ImplementsSerde(m.Type, context, SerdeUsage.Deserialize)) + { + wrapperName = memberType; + } + else if (TryGetAnyWrapper(m.Type, context, SerdeUsage.Deserialize, inProgress) is { } wrap) + { + wrapperName = wrap.ToString(); + } + else + { + // No built-in handling and doesn't implement IDeserialize, error + context.ReportDiagnostic(CreateDiagnostic( + DiagId.ERR_DoesntImplementInterface, + m.Locations[0], + m.Symbol, + memberType, + "Serde.IDeserialize")); + wrapperName = memberType; + } + var localName = GetLocalName(m); + localsBuilder.AppendLine($"{memberType} {localName} = default!;"); + casesBuilder.AppendLine($""" + case {i}: + {localName} = typeDeserialize.ReadValue<{memberType}, {wrapperName}>({indexLocalName}); + {AssignedVarName} |= (({assignedVarType})1) << {i}; + break; + """); + if (m.IsNullable && !m.ThrowIfMissing) + { + assignedMaskValue |= 1L << i; + } + } + var unknownMemberBehavior = SymbolUtilities.GetTypeOptions(type).DenyUnknownMembers + ? $""" + throw new InvalidDeserializeValueException("Unexpected field or property name in type {type.Name}: '" + _l_errorName + "'"); + """ + : "break;"; + casesBuilder.AppendLine($""" + case Serde.IDeserializeType.IndexNotFound: + {unknownMemberBehavior} + """); + casesBuilder.AppendLine($""" + default: + throw new InvalidOperationException("Unexpected index: " + {indexLocalName}); + """); + return (casesBuilder.ToString(), + localsBuilder.ToString(), + "0b" + Convert.ToString(assignedMaskValue, 2)); + } + + } + + // This is the old visitor-driven deserialization method. It is being replaced by the new + // TypeInfo-driven deserialization. // Generate method `void ISerialize.Deserialize(IDeserializer deserializer) { ... }` - private static MethodDeclarationSyntax GenerateDeserializeMethod( + private static MethodDeclarationSyntax GenerateOldDeserializeMethod( GeneratorExecutionContext context, QualifiedNameSyntax interfaceSyntax, ITypeSymbol typeSymbol) @@ -302,10 +451,7 @@ private static MemberDeclarationSyntax GenerateCustomTypeVisitor( <= 64 => "ulong", _ => throw new InvalidOperationException("Too many members in type") }; - string cases; - string locals; - string assignedMask; - InitCasesAndLocals(); + var (cases, locals, assignedMask) = InitCasesAndLocals(); string typeCreationExpr = GenerateTypeCreation(context, typeName, type, members); var methodText = $$""" {{typeName}} Serde.IDeserializeVisitor<{{typeName}}>.VisitDictionary(ref D d) @@ -325,7 +471,7 @@ private static MemberDeclarationSyntax GenerateCustomTypeVisitor( """; return ParseMemberDeclaration(methodText)!; - void InitCasesAndLocals() + (string Cases, string Locals, string AssignedMask) InitCasesAndLocals() { var casesBuilder = new StringBuilder(); var localsBuilder = new StringBuilder(); @@ -371,9 +517,9 @@ void InitCasesAndLocals() assignedMaskValue |= 1L << i; } } - cases = casesBuilder.ToString(); - locals = localsBuilder.ToString(); - assignedMask = "0b" + Convert.ToString(assignedMaskValue, 2); + return (casesBuilder.ToString(), + localsBuilder.ToString(), + "0b" + Convert.ToString(assignedMaskValue, 2)); } } @@ -448,6 +594,10 @@ private static string GenerateTypeCreation(GeneratorExecutionContext context, st foreach (var m in assignmentMembers) { + if (m.SkipDeserialize) + { + continue; + } assignments.AppendLine($"{m.Name} = {GetLocalName(m)},"); } var mask = new string('1', members.Count); diff --git a/src/generator/Generator.SerdeTypeInfo.cs b/src/generator/Generator.SerdeTypeInfo.cs index 4f9d2f61..905a1619 100644 --- a/src/generator/Generator.SerdeTypeInfo.cs +++ b/src/generator/Generator.SerdeTypeInfo.cs @@ -6,6 +6,7 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; +using static Serde.Diagnostics; namespace Serde; @@ -35,15 +36,70 @@ public static void GenerateTypeInfo( { return; } - var receiverType = typeSymbol; + + INamedTypeSymbol receiverType; + ExpressionSyntax receiverExpr; + string? wrapperName; + string? wrappedName; + // If the Through property is set, then we are implementing a wrapper type + if (attributeData.NamedArguments is [ (nameof(GenerateSerialize.Through), { Value: string memberName }) ]) + { + var members = model.LookupSymbols(typeDecl.SpanStart, typeSymbol, memberName); + if (members.Length != 1) + { + // TODO: Error about bad lookup + return; + } + receiverType = (INamedTypeSymbol)SymbolUtilities.GetSymbolType(members[0]); + receiverExpr = IdentifierName(memberName); + wrapperName = typeDecl.Identifier.ValueText; + wrappedName = receiverType.ToDisplayString(); + } + // Enums are also always wrapped, but the attribute is on the enum itself + else if (typeDecl.IsKind(SyntaxKind.EnumDeclaration)) + { + receiverType = typeSymbol; + receiverExpr = IdentifierName("Value"); + wrappedName = typeDecl.Identifier.ValueText; + wrapperName = GetWrapperName(wrappedName); + } + // Just a normal interface implementation + else + { + wrapperName = null; + wrappedName = null; + if (!typeDecl.Modifiers.Any(tok => tok.IsKind(SyntaxKind.PartialKeyword))) + { + // Type must be partial + context.ReportDiagnostic(CreateDiagnostic( + DiagId.ERR_TypeNotPartial, + typeDecl.Identifier.GetLocation(), + typeDecl.Identifier.ValueText)); + return; + } + receiverType = typeSymbol; + receiverExpr = ThisExpression(); + } + + GenerateTypeInfo(typeDecl, receiverType, context); + } + + public static void GenerateTypeInfo( + BaseTypeDeclarationSyntax typeDecl, + INamedTypeSymbol receiverType, + GeneratorExecutionContext context) + { var statements = new List(); var fieldsAndProps = SymbolUtilities.GetDataMembers(receiverType, SerdeUsage.Both); var typeDeclContext = new TypeDeclContext(typeDecl); - var typeName = typeDeclContext.Name; - var typeString = receiverType.IsGenericType - ? receiverType.Name + "<" + new string(',', receiverType.TypeParameters.Length - 1) + ">" - : receiverType.Name; + var typeName = receiverType.Name; + var typeString = receiverType.ToDisplayString(); + if (typeString.IndexOf('<') is var index && index != -1) + { + typeString = typeString[..index]; + typeString = typeString + "<" + new string(',', receiverType.TypeParameters.Length - 1) + ">"; + } var newType = $$""" internal static class {{typeName}}SerdeTypeInfo { @@ -61,4 +117,6 @@ internal static class {{typeName}}SerdeTypeInfo context.AddSource(fullTypeName, newType); } + + private static string GetWrapperName(string typeName) => typeName + "Wrap"; } \ No newline at end of file diff --git a/src/generator/Generator.Wrapper.cs b/src/generator/Generator.Wrapper.cs index 8667a436..e2503b94 100644 --- a/src/generator/Generator.Wrapper.cs +++ b/src/generator/Generator.Wrapper.cs @@ -60,6 +60,7 @@ internal static void GenerateWrapper( var inProgress = ImmutableList.Create(receiverType); + SerdeTypeInfoGenerator.GenerateTypeInfo(typeDecl, (INamedTypeSymbol)receiverType, context); GenerateImpl(SerdeUsage.Serialize, new TypeDeclContext(typeDecl), receiverType, receiverExpr, context, inProgress); SerializeImplRoslynGenerator.GenerateImpl(SerdeUsage.Serialize, new TypeDeclContext(typeDecl), receiverType, receiverExpr, context, inProgress); GenerateImpl(SerdeUsage.Deserialize, new TypeDeclContext(typeDecl), receiverType, receiverExpr, context, inProgress); diff --git a/src/serde/IDeserialize.cs b/src/serde/IDeserialize.cs index 234fee7c..b4be5776 100644 --- a/src/serde/IDeserialize.cs +++ b/src/serde/IDeserialize.cs @@ -80,7 +80,15 @@ public interface IDeserializeType public const int EndOfType = -1; public const int IndexNotFound = -2; - int TryReadIndex(TypeInfo map); + /// + /// Try to read the index of the next field in the type. If the index is found, the method + /// should return the index and set to null. If the end of the + /// type is reached, the method should return and set to null. If the field is not found, the method should return and set to the name of the missing + /// field, or the best-possible user-facing name. + /// + int TryReadIndex(TypeInfo map, out string? errorName); V ReadValue(int index) where D : IDeserialize; } @@ -96,17 +104,20 @@ public sealed class TypeInfo { // The field names are sorted by the Utf8 representation of the field name. private readonly ImmutableArray<(ReadOnlyMemory Utf8Name, int Index)> _nameToIndex; - private readonly ImmutableArray _indexToInfo; + private readonly ImmutableArray _indexToInfo; private TypeInfo( ImmutableArray<(ReadOnlyMemory, int)> nameToIndex, - ImmutableArray indexToInfo) + ImmutableArray indexToInfo) { _nameToIndex = nameToIndex; _indexToInfo = indexToInfo; } - private readonly record struct FieldInfo(IList CustomAttributesData); + /// + /// Holds information for a field or property in the given type. + /// + private readonly record struct PrivateFieldInfo(IList CustomAttributesData); private static readonly UTF8Encoding s_utf8 = new UTF8Encoding(encoderShouldEmitUTF8Identifier: false); @@ -119,7 +130,7 @@ public static TypeInfo Create( ReadOnlySpan<(string SerializeName, MemberInfo MemberInfo)> fields) { var nameToIndexBuilder = ImmutableArray.CreateBuilder<(ReadOnlyMemory Utf8Name, int Index)>(fields.Length); - var indexToInfoBuilder = ImmutableArray.CreateBuilder(fields.Length); + var indexToInfoBuilder = ImmutableArray.CreateBuilder(fields.Length); for (int index = 0; index < fields.Length; index++) { var (serializeName, memberInfo) = fields[index]; @@ -129,7 +140,7 @@ public static TypeInfo Create( } nameToIndexBuilder.Add((s_utf8.GetBytes(serializeName), index)); - var fieldInfo = new FieldInfo(memberInfo.GetCustomAttributesData()); + var fieldInfo = new PrivateFieldInfo(memberInfo.GetCustomAttributesData()); indexToInfoBuilder.Add(fieldInfo); } diff --git a/src/serde/json/JsonDeserializer.cs b/src/serde/json/JsonDeserializer.cs index 3c68fd82..01a730bc 100644 --- a/src/serde/json/JsonDeserializer.cs +++ b/src/serde/json/JsonDeserializer.cs @@ -304,15 +304,31 @@ V IDeserializeType.ReadValue(int index) return D.Deserialize(this); } - int IDeserializeType.TryReadIndex(TypeInfo map) + int IDeserializeType.TryReadIndex(TypeInfo map, out string? errorName) { + bool foundProperty = false; ref var reader = ref GetReader(); - reader.ReadOrThrow(); - - if (reader.TokenType == JsonTokenType.EndObject) + while (!foundProperty) { - return IDeserializeType.EndOfType; + reader.ReadOrThrow(); + switch (reader.TokenType) + { + case JsonTokenType.EndObject: + errorName = null; + return IDeserializeType.EndOfType; + case JsonTokenType.PropertyName: + foundProperty = true; + break; + default: + // If we aren't at a property name, we must be at a value and intending to skip it + // Call Skip in case we are starting a new array or object. Doesn't do + // anything for bare tokens, but we've already read one token forward above, + // so we can simply continue + reader.Skip(); + break; + } } + Debug.Assert(reader.TokenType == JsonTokenType.PropertyName); Utf8Span span; if (reader.HasValueSequence || reader.ValueIsEscaped) @@ -324,7 +340,9 @@ int IDeserializeType.TryReadIndex(TypeInfo map) { span = reader.ValueSpan; } - return map.TryGetIndex(span); + var index = map.TryGetIndex(span); + errorName = index == IDeserializeType.IndexNotFound ? span.ToString() : null; + return index; } } diff --git a/test/Serde.Generation.Test/DeserializeTests.cs b/test/Serde.Generation.Test/DeserializeTests.cs index 66fde99b..e2b97e74 100644 --- a/test/Serde.Generation.Test/DeserializeTests.cs +++ b/test/Serde.Generation.Test/DeserializeTests.cs @@ -66,7 +66,7 @@ partial struct Rgb } [Fact] - public Task MemberSkipSerialize() + public Task MemberSkipDeserialize() { var src = """ using Serde; @@ -83,7 +83,7 @@ partial struct Rgb } [Fact] - public Task MemberSkipDeserialize() + public Task MemberSkipSerialize() { var src = """ using Serde; diff --git a/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.verified.cs index 6307f877..085943e9 100644 --- a/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.verified.cs @@ -5,9 +5,9 @@ partial record AllInOne internal static class ColorEnumSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorEnum).GetField("Red")!), -("blue", typeof(ColorEnum).GetField("Blue")!), -("green", typeof(ColorEnum).GetField("Green")!) +("red", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Red")!), +("blue", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Blue")!), +("green", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Green")!) }); } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.IDeserialize.verified.cs index e8e8e714..36527aa0 100644 --- a/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOne.IDeserialize.verified.cs @@ -10,198 +10,126 @@ partial record AllInOne : Serde.IDeserialize { static Serde.Test.AllInOne Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + bool _l_boolfield = default !; + char _l_charfield = default !; + byte _l_bytefield = default !; + ushort _l_ushortfield = default !; + uint _l_uintfield = default !; + ulong _l_ulongfield = default !; + sbyte _l_sbytefield = default !; + short _l_shortfield = default !; + int _l_intfield = default !; + long _l_longfield = default !; + string _l_stringfield = default !; + string? _l_nullstringfield = default !; + uint[] _l_uintarr = default !; + int[][] _l_nestedarr = default !; + System.Collections.Immutable.ImmutableArray _l_intimm = default !; + Serde.Test.AllInOne.ColorEnum _l_color = default !; + ushort _r_assignedValid = 0b100000000000; + var _l_typeInfo = AllInOneSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "BoolField", - "CharField", - "ByteField", - "UShortField", - "UIntField", - "ULongField", - "SByteField", - "ShortField", - "IntField", - "LongField", - "StringField", - "NullStringField", - "UIntArr", - "NestedArr", - "IntImm", - "Color" - }; - return deserializer.DeserializeType("AllInOne", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.AllInOne"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'b'when s.SequenceEqual("boolField"u8): - return 1; - case (byte)'c'when s.SequenceEqual("charField"u8): - return 2; - case (byte)'b'when s.SequenceEqual("byteField"u8): - return 3; - case (byte)'u'when s.SequenceEqual("uShortField"u8): - return 4; - case (byte)'u'when s.SequenceEqual("uIntField"u8): - return 5; - case (byte)'u'when s.SequenceEqual("uLongField"u8): - return 6; - case (byte)'s'when s.SequenceEqual("sByteField"u8): - return 7; - case (byte)'s'when s.SequenceEqual("shortField"u8): - return 8; - case (byte)'i'when s.SequenceEqual("intField"u8): - return 9; - case (byte)'l'when s.SequenceEqual("longField"u8): - return 10; - case (byte)'s'when s.SequenceEqual("stringField"u8): - return 11; - case (byte)'n'when s.SequenceEqual("nullStringField"u8): - return 12; - case (byte)'u'when s.SequenceEqual("uIntArr"u8): - return 13; - case (byte)'n'when s.SequenceEqual("nestedArr"u8): - return 14; - case (byte)'i'when s.SequenceEqual("intImm"u8): - return 15; - case (byte)'c'when s.SequenceEqual("color"u8): - return 16; - default: - return 0; - } + case 0: + _l_boolfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 0; + break; + case 1: + _l_charfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 1; + break; + case 2: + _l_bytefield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 2; + break; + case 3: + _l_ushortfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 3; + break; + case 4: + _l_uintfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 4; + break; + case 5: + _l_ulongfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 5; + break; + case 6: + _l_sbytefield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 6; + break; + case 7: + _l_shortfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 7; + break; + case 8: + _l_intfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 8; + break; + case 9: + _l_longfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 9; + break; + case 10: + _l_stringfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 10; + break; + case 11: + _l_nullstringfield = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((ushort)1) << 11; + break; + case 12: + _l_uintarr = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((ushort)1) << 12; + break; + case 13: + _l_nestedarr = typeDeserialize.ReadValue>>(_l_index_); + _r_assignedValid |= ((ushort)1) << 13; + break; + case 14: + _l_intimm = typeDeserialize.ReadValue, ImmutableArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((ushort)1) << 14; + break; + case 15: + _l_color = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 15; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.AllInOne Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111111111111111) { - bool _l_boolfield = default !; - char _l_charfield = default !; - byte _l_bytefield = default !; - ushort _l_ushortfield = default !; - uint _l_uintfield = default !; - ulong _l_ulongfield = default !; - sbyte _l_sbytefield = default !; - short _l_shortfield = default !; - int _l_intfield = default !; - long _l_longfield = default !; - string _l_stringfield = default !; - string? _l_nullstringfield = default !; - uint[] _l_uintarr = default !; - int[][] _l_nestedarr = default !; - System.Collections.Immutable.ImmutableArray _l_intimm = default !; - Serde.Test.AllInOne.ColorEnum _l_color = default !; - ushort _r_assignedValid = 0b100000000000; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_boolfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 0; - break; - case 2: - _l_charfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 1; - break; - case 3: - _l_bytefield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 2; - break; - case 4: - _l_ushortfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 3; - break; - case 5: - _l_uintfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 4; - break; - case 6: - _l_ulongfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 5; - break; - case 7: - _l_sbytefield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 6; - break; - case 8: - _l_shortfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 7; - break; - case 9: - _l_intfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 8; - break; - case 10: - _l_longfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 9; - break; - case 11: - _l_stringfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 10; - break; - case 12: - _l_nullstringfield = d.GetNextValue>(); - _r_assignedValid |= ((ushort)1) << 11; - break; - case 13: - _l_uintarr = d.GetNextValue>(); - _r_assignedValid |= ((ushort)1) << 12; - break; - case 14: - _l_nestedarr = d.GetNextValue>>(); - _r_assignedValid |= ((ushort)1) << 13; - break; - case 15: - _l_intimm = d.GetNextValue, ImmutableArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((ushort)1) << 14; - break; - case 16: - _l_color = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 15; - break; - } - } - - if (_r_assignedValid != 0b1111111111111111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.AllInOne() - { - BoolField = _l_boolfield, - CharField = _l_charfield, - ByteField = _l_bytefield, - UShortField = _l_ushortfield, - UIntField = _l_uintfield, - ULongField = _l_ulongfield, - SByteField = _l_sbytefield, - ShortField = _l_shortfield, - IntField = _l_intfield, - LongField = _l_longfield, - StringField = _l_stringfield, - NullStringField = _l_nullstringfield, - UIntArr = _l_uintarr, - NestedArr = _l_nestedarr, - IntImm = _l_intimm, - Color = _l_color, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.AllInOne() + { + BoolField = _l_boolfield, + CharField = _l_charfield, + ByteField = _l_bytefield, + UShortField = _l_ushortfield, + UIntField = _l_uintfield, + ULongField = _l_ulongfield, + SByteField = _l_sbytefield, + ShortField = _l_shortfield, + IntField = _l_intfield, + LongField = _l_longfield, + StringField = _l_stringfield, + NullStringField = _l_nullstringfield, + UIntArr = _l_uintarr, + NestedArr = _l_nestedarr, + IntImm = _l_intimm, + Color = _l_color, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOneSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOneSerdeTypeInfo.verified.cs index 2d6da9a8..f5916a4f 100644 --- a/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOneSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/AllInOneTest.GeneratorTest/Serde.Test.AllInOneSerdeTypeInfo.verified.cs @@ -3,21 +3,21 @@ namespace Serde.Test; internal static class AllInOneSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("boolField", typeof(AllInOne).GetField("BoolField")!), -("charField", typeof(AllInOne).GetField("CharField")!), -("byteField", typeof(AllInOne).GetField("ByteField")!), -("uShortField", typeof(AllInOne).GetField("UShortField")!), -("uIntField", typeof(AllInOne).GetField("UIntField")!), -("uLongField", typeof(AllInOne).GetField("ULongField")!), -("sByteField", typeof(AllInOne).GetField("SByteField")!), -("shortField", typeof(AllInOne).GetField("ShortField")!), -("intField", typeof(AllInOne).GetField("IntField")!), -("longField", typeof(AllInOne).GetField("LongField")!), -("stringField", typeof(AllInOne).GetField("StringField")!), -("nullStringField", typeof(AllInOne).GetField("NullStringField")!), -("uIntArr", typeof(AllInOne).GetField("UIntArr")!), -("nestedArr", typeof(AllInOne).GetField("NestedArr")!), -("intImm", typeof(AllInOne).GetField("IntImm")!), -("color", typeof(AllInOne).GetField("Color")!) +("boolField", typeof(Serde.Test.AllInOne).GetField("BoolField")!), +("charField", typeof(Serde.Test.AllInOne).GetField("CharField")!), +("byteField", typeof(Serde.Test.AllInOne).GetField("ByteField")!), +("uShortField", typeof(Serde.Test.AllInOne).GetField("UShortField")!), +("uIntField", typeof(Serde.Test.AllInOne).GetField("UIntField")!), +("uLongField", typeof(Serde.Test.AllInOne).GetField("ULongField")!), +("sByteField", typeof(Serde.Test.AllInOne).GetField("SByteField")!), +("shortField", typeof(Serde.Test.AllInOne).GetField("ShortField")!), +("intField", typeof(Serde.Test.AllInOne).GetField("IntField")!), +("longField", typeof(Serde.Test.AllInOne).GetField("LongField")!), +("stringField", typeof(Serde.Test.AllInOne).GetField("StringField")!), +("nullStringField", typeof(Serde.Test.AllInOne).GetField("NullStringField")!), +("uIntArr", typeof(Serde.Test.AllInOne).GetField("UIntArr")!), +("nestedArr", typeof(Serde.Test.AllInOne).GetField("NestedArr")!), +("intImm", typeof(Serde.Test.AllInOne).GetField("IntImm")!), +("color", typeof(Serde.Test.AllInOne).GetField("Color")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests.EnumMember/C.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests.EnumMember/C.IDeserialize.verified.cs index 2fa9e081..6c3c874d 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests.EnumMember/C.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests.EnumMember/C.IDeserialize.verified.cs @@ -8,89 +8,53 @@ partial class C : Serde.IDeserialize { static C Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + ColorInt _l_colorint = default !; + ColorByte _l_colorbyte = default !; + ColorLong _l_colorlong = default !; + ColorULong _l_colorulong = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = CSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "ColorInt", - "ColorByte", - "ColorLong", - "ColorULong" - }; - return deserializer.DeserializeType("C", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "C"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("colorInt"u8): - return 1; - case (byte)'c'when s.SequenceEqual("colorByte"u8): - return 2; - case (byte)'c'when s.SequenceEqual("colorLong"u8): - return 3; - case (byte)'c'when s.SequenceEqual("colorULong"u8): - return 4; - default: - return 0; - } + case 0: + _l_colorint = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_colorbyte = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_colorlong = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case 3: + _l_colorulong = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 3; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - C Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111) { - ColorInt _l_colorint = default !; - ColorByte _l_colorbyte = default !; - ColorLong _l_colorlong = default !; - ColorULong _l_colorulong = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_colorint = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_colorbyte = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_colorlong = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - case 4: - _l_colorulong = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 3; - break; - } - } - - if (_r_assignedValid != 0b1111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new C() - { - ColorInt = _l_colorint, - ColorByte = _l_colorbyte, - ColorLong = _l_colorlong, - ColorULong = _l_colorulong, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new C() + { + ColorInt = _l_colorint, + ColorByte = _l_colorbyte, + ColorLong = _l_colorlong, + ColorULong = _l_colorulong, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/BIND_OPTSSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/BIND_OPTSSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..f06b61b7 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/BIND_OPTSSerdeTypeInfo.verified.cs @@ -0,0 +1,10 @@ +//HintName: BIND_OPTSSerdeTypeInfo.cs +internal static class BIND_OPTSSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("cbStruct", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("cbStruct")!), +("dwTickCountDeadline", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("dwTickCountDeadline")!), +("grfFlags", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfFlags")!), +("grfMode", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfMode")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrap.IDeserialize.verified.cs index b8b0d581..e3edcb7b 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrap.IDeserialize.verified.cs @@ -8,89 +8,53 @@ partial record struct OptsWrap : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_cbstruct = default !; + int _l_dwtickcountdeadline = default !; + int _l_grfflags = default !; + int _l_grfmode = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = BIND_OPTSSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "cbStruct", - "dwTickCountDeadline", - "grfFlags", - "grfMode" - }; - return deserializer.DeserializeType("BIND_OPTS", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "System.Runtime.InteropServices.ComTypes.BIND_OPTS"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("cbStruct"u8): - return 1; - case (byte)'d'when s.SequenceEqual("dwTickCountDeadline"u8): - return 2; - case (byte)'g'when s.SequenceEqual("grfFlags"u8): - return 3; - case (byte)'g'when s.SequenceEqual("grfMode"u8): - return 4; - default: - return 0; - } + case 0: + _l_cbstruct = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_dwtickcountdeadline = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_grfflags = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case 3: + _l_grfmode = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 3; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - System.Runtime.InteropServices.ComTypes.BIND_OPTS Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111) { - int _l_cbstruct = default !; - int _l_dwtickcountdeadline = default !; - int _l_grfflags = default !; - int _l_grfmode = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_cbstruct = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_dwtickcountdeadline = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_grfflags = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - case 4: - _l_grfmode = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 3; - break; - } - } - - if (_r_assignedValid != 0b1111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() - { - cbStruct = _l_cbstruct, - dwTickCountDeadline = _l_dwtickcountdeadline, - grfFlags = _l_grfflags, - grfMode = _l_grfmode, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() + { + cbStruct = _l_cbstruct, + dwTickCountDeadline = _l_dwtickcountdeadline, + grfFlags = _l_grfflags, + grfMode = _l_grfmode, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrapSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrapSerdeTypeInfo.verified.cs deleted file mode 100644 index cd01470f..00000000 --- a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/OptsWrapSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: OptsWrapSerdeTypeInfo.cs -internal static class OptsWrapSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("value", typeof(OptsWrap).GetProperty("Value")!) - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/S.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/S.IDeserialize.verified.cs index d5a3797d..432ca99c 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/S.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests.NestedExplicitDeserializeWrapper/S.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial struct S : Serde.IDeserialize { static S Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + System.Collections.Immutable.ImmutableArray _l_opts = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = SSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Opts" - }; - return deserializer.DeserializeType("S", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "S"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'o'when s.SequenceEqual("opts"u8): - return 1; - default: - return 0; - } + case 0: + _l_opts = typeDeserialize.ReadValue, Serde.ImmutableArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - S Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - System.Collections.Immutable.ImmutableArray _l_opts = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_opts = d.GetNextValue, Serde.ImmutableArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new S() - { - Opts = _l_opts, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new S() + { + Opts = _l_opts, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/Array#ArrayField.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/Array#ArrayField.IDeserialize.verified.cs index e7d44621..b6eef14e 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/Array#ArrayField.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/Array#ArrayField.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial class ArrayField : Serde.IDeserialize { static ArrayField Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int[] _l_intarr = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = ArrayFieldSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "IntArr" - }; - return deserializer.DeserializeType("ArrayField", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "ArrayField"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'i'when s.SequenceEqual("intArr"u8): - return 1; - default: - return 0; - } + case 0: + _l_intarr = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - ArrayField Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - int[] _l_intarr = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_intarr = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new ArrayField() - { - IntArr = _l_intarr, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new ArrayField() + { + IntArr = _l_intarr, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeMissing#SetToNull.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeMissing#SetToNull.IDeserialize.verified.cs index 1332ae60..02a709bd 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeMissing#SetToNull.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeMissing#SetToNull.IDeserialize.verified.cs @@ -8,80 +8,47 @@ partial record struct SetToNull : Serde.IDeserialize { static SetToNull Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + string _l_present = default !; + string? _l_missing = default !; + string? _l_throwmissing = default !; + byte _r_assignedValid = 0b10; + var _l_typeInfo = SetToNullSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Present", - "Missing", - "ThrowMissing" - }; - return deserializer.DeserializeType("SetToNull", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "SetToNull"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'p'when s.SequenceEqual("present"u8): - return 1; - case (byte)'m'when s.SequenceEqual("missing"u8): - return 2; - case (byte)'t'when s.SequenceEqual("throwMissing"u8): - return 3; - default: - return 0; - } + case 0: + _l_present = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_missing = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_throwmissing = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - SetToNull Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b111) { - string _l_present = default !; - string? _l_missing = default !; - string? _l_throwmissing = default !; - byte _r_assignedValid = 0b10; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_present = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_missing = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_throwmissing = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 2; - break; - } - } - - if (_r_assignedValid != 0b111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new SetToNull() - { - Present = _l_present, - Missing = _l_missing, - ThrowMissing = _l_throwmissing, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new SetToNull() + { + Present = _l_present, + Missing = _l_missing, + ThrowMissing = _l_throwmissing, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#BIND_OPTSSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#BIND_OPTSSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..f06b61b7 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#BIND_OPTSSerdeTypeInfo.verified.cs @@ -0,0 +1,10 @@ +//HintName: BIND_OPTSSerdeTypeInfo.cs +internal static class BIND_OPTSSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("cbStruct", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("cbStruct")!), +("dwTickCountDeadline", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("dwTickCountDeadline")!), +("grfFlags", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfFlags")!), +("grfMode", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfMode")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#Wrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#Wrap.IDeserialize.verified.cs index f639516d..95277664 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#Wrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#Wrap.IDeserialize.verified.cs @@ -8,89 +8,53 @@ partial record struct Wrap : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_cbstruct = default !; + int _l_dwtickcountdeadline = default !; + int _l_grfflags = default !; + int _l_grfmode = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = BIND_OPTSSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "cbStruct", - "dwTickCountDeadline", - "grfFlags", - "grfMode" - }; - return deserializer.DeserializeType("BIND_OPTS", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "System.Runtime.InteropServices.ComTypes.BIND_OPTS"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("cbStruct"u8): - return 1; - case (byte)'d'when s.SequenceEqual("dwTickCountDeadline"u8): - return 2; - case (byte)'g'when s.SequenceEqual("grfFlags"u8): - return 3; - case (byte)'g'when s.SequenceEqual("grfMode"u8): - return 4; - default: - return 0; - } + case 0: + _l_cbstruct = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_dwtickcountdeadline = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_grfflags = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case 3: + _l_grfmode = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 3; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - System.Runtime.InteropServices.ComTypes.BIND_OPTS Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111) { - int _l_cbstruct = default !; - int _l_dwtickcountdeadline = default !; - int _l_grfflags = default !; - int _l_grfmode = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_cbstruct = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_dwtickcountdeadline = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_grfflags = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - case 4: - _l_grfmode = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 3; - break; - } - } - - if (_r_assignedValid != 0b1111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() - { - cbStruct = _l_cbstruct, - dwTickCountDeadline = _l_dwtickcountdeadline, - grfFlags = _l_grfflags, - grfMode = _l_grfmode, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() + { + cbStruct = _l_cbstruct, + dwTickCountDeadline = _l_dwtickcountdeadline, + grfFlags = _l_grfflags, + grfMode = _l_grfmode, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#WrapSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#WrapSerdeTypeInfo.verified.cs deleted file mode 100644 index 3ddbd022..00000000 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/DeserializeOnlyWrap#WrapSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: WrapSerdeTypeInfo.cs -internal static class WrapSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("value", typeof(Wrap).GetProperty("Value")!) - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkip#Rgb.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkip#Rgb.IDeserialize.verified.cs index b5bb25c8..029896f4 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkip#Rgb.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkip#Rgb.IDeserialize.verified.cs @@ -8,71 +8,41 @@ partial struct Rgb : Serde.IDeserialize { static Rgb Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + byte _l_red = default !; + byte _l_blue = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = RgbSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Red", - "Blue" - }; - return deserializer.DeserializeType("Rgb", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Rgb"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'r'when s.SequenceEqual("red"u8): - return 1; - case (byte)'b'when s.SequenceEqual("blue"u8): - return 2; - default: - return 0; - } + case 0: + _l_red = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_blue = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Rgb Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - byte _l_red = default !; - byte _l_blue = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_red = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_blue = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Rgb() - { - Red = _l_red, - Blue = _l_blue, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Rgb() + { + Red = _l_red, + Blue = _l_blue, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipDeserialize#Rgb.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipDeserialize#Rgb.IDeserialize.verified.cs index 24c28abc..1a7ddb31 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipDeserialize#Rgb.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipDeserialize#Rgb.IDeserialize.verified.cs @@ -8,80 +8,41 @@ partial struct Rgb : Serde.IDeserialize { static Rgb Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + byte _l_red = default !; + byte _l_blue = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = RgbSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Red", - "Green", - "Blue" - }; - return deserializer.DeserializeType("Rgb", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Rgb"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'r'when s.SequenceEqual("red"u8): - return 1; - case (byte)'g'when s.SequenceEqual("green"u8): - return 2; - case (byte)'b'when s.SequenceEqual("blue"u8): - return 3; - default: - return 0; - } + case 0: + _l_red = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 2: + _l_blue = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Rgb Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b111) { - byte _l_red = default !; - byte _l_green = default !; - byte _l_blue = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_red = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_green = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_blue = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - } - } - - if (_r_assignedValid != 0b111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Rgb() - { - Red = _l_red, - Green = _l_green, - Blue = _l_blue, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Rgb() + { + Red = _l_red, + Blue = _l_blue, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipSerialize#Rgb.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipSerialize#Rgb.IDeserialize.verified.cs index b5bb25c8..ba4f35d5 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipSerialize#Rgb.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/MemberSkipSerialize#Rgb.IDeserialize.verified.cs @@ -8,71 +8,47 @@ partial struct Rgb : Serde.IDeserialize { static Rgb Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + byte _l_red = default !; + byte _l_green = default !; + byte _l_blue = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = RgbSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Red", - "Blue" - }; - return deserializer.DeserializeType("Rgb", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Rgb"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'r'when s.SequenceEqual("red"u8): - return 1; - case (byte)'b'when s.SequenceEqual("blue"u8): - return 2; - default: - return 0; - } + case 0: + _l_red = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_green = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_blue = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Rgb Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b111) { - byte _l_red = default !; - byte _l_blue = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_red = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_blue = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Rgb() - { - Red = _l_red, - Blue = _l_blue, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Rgb() + { + Red = _l_red, + Green = _l_green, + Blue = _l_blue, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.D.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.D.IDeserialize.verified.cs index b5183d29..23c4419a 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.D.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.D.IDeserialize.verified.cs @@ -14,63 +14,36 @@ partial class D : Serde.IDeserialize { static A.B.C.D Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_field = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = DSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Field" - }; - return deserializer.DeserializeType("D", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "A.B.C.D"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'f'when s.SequenceEqual("field"u8): - return 1; - default: - return 0; - } + case 0: + _l_field = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - A.B.C.D Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - int _l_field = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_field = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new A.B.C.D() - { - Field = _l_field, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new A.B.C.D() + { + Field = _l_field, + }; + return newType; } } } diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs index 3b60227d..3032a166 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs @@ -8,7 +8,7 @@ partial class C internal static class DSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("field", typeof(D).GetField("Field")!) +("field", typeof(A.B.C.D).GetField("Field")!) }); } } diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/NullableRefField#S.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/NullableRefField#S.IDeserialize.verified.cs index b33f48d1..29f035d7 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/NullableRefField#S.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/NullableRefField#S.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial struct S : Serde.IDeserialize { static S Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + string? _l_f = default !; + byte _r_assignedValid = 0b1; + var _l_typeInfo = SSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "F" - }; - return deserializer.DeserializeType("S", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "S"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'f'when s.SequenceEqual("f"u8): - return 1; - default: - return 0; - } + case 0: + _l_f = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - S Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - string? _l_f = default !; - byte _r_assignedValid = 0b1; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_f = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new S() - { - F = _l_f, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new S() + { + F = _l_f, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/DeserializeTests/Rgb#Rgb.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/DeserializeTests/Rgb#Rgb.IDeserialize.verified.cs index 24c28abc..ba4f35d5 100644 --- a/test/Serde.Generation.Test/test_output/DeserializeTests/Rgb#Rgb.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/DeserializeTests/Rgb#Rgb.IDeserialize.verified.cs @@ -8,80 +8,47 @@ partial struct Rgb : Serde.IDeserialize { static Rgb Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + byte _l_red = default !; + byte _l_green = default !; + byte _l_blue = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = RgbSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Red", - "Green", - "Blue" - }; - return deserializer.DeserializeType("Rgb", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Rgb"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'r'when s.SequenceEqual("red"u8): - return 1; - case (byte)'g'when s.SequenceEqual("green"u8): - return 2; - case (byte)'b'when s.SequenceEqual("blue"u8): - return 3; - default: - return 0; - } + case 0: + _l_red = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_green = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_blue = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Rgb Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b111) { - byte _l_red = default !; - byte _l_green = default !; - byte _l_blue = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_red = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_green = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_blue = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - } - } - - if (_r_assignedValid != 0b111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Rgb() - { - Red = _l_red, - Green = _l_green, - Blue = _l_blue, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Rgb() + { + Red = _l_red, + Green = _l_green, + Blue = _l_blue, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S.IDeserialize.verified.cs index eef467a3..1a9865ef 100644 --- a/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial struct S : Serde.IDeserialize { static S Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + ColorEnum _l_e = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = SSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "E" - }; - return deserializer.DeserializeType("S", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "S"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'e'when s.SequenceEqual("e"u8): - return 1; - default: - return 0; - } + case 0: + _l_e = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - S Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - ColorEnum _l_e = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_e = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new S() - { - E = _l_e, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new S() + { + E = _l_e, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S2.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S2.IDeserialize.verified.cs index c5ad1e40..5642dac0 100644 --- a/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S2.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/MemberFormatTests.EnumValues/S2.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial struct S2 : Serde.IDeserialize { static S2 Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + ColorEnum _l_e = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = S2SerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "E" - }; - return deserializer.DeserializeType("S2", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "S2"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'E'when s.SequenceEqual("E"u8): - return 1; - default: - return 0; - } + case 0: + _l_e = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - S2 Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - ColorEnum _l_e = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_e = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new S2() - { - E = _l_e, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new S2() + { + E = _l_e, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/MemberFormatTests.KebabCase/S.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/MemberFormatTests.KebabCase/S.IDeserialize.verified.cs index 0e11b09e..e7a23d0a 100644 --- a/test/Serde.Generation.Test/test_output/MemberFormatTests.KebabCase/S.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/MemberFormatTests.KebabCase/S.IDeserialize.verified.cs @@ -8,71 +8,41 @@ partial struct S : Serde.IDeserialize { static S Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_one = default !; + int _l_twoword = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = SSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "One", - "TwoWord" - }; - return deserializer.DeserializeType("S", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "S"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'o'when s.SequenceEqual("one"u8): - return 1; - case (byte)'t'when s.SequenceEqual("two-word"u8): - return 2; - default: - return 0; - } + case 0: + _l_one = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_twoword = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - S Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - int _l_one = default !; - int _l_twoword = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_one = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_twoword = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new S() - { - One = _l_one, - TwoWord = _l_twoword, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new S() + { + One = _l_one, + TwoWord = _l_twoword, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class0SerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class0SerdeTypeInfo.verified.cs index 92ca534e..b7015871 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class0SerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class0SerdeTypeInfo.verified.cs @@ -4,8 +4,8 @@ partial class TestCase15 internal static class Class0SerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("field0", typeof(Class0).GetField("Field0")!), -("field1", typeof(Class0).GetField("Field1")!) +("field0", typeof(TestCase15.Class0).GetField("Field0")!), +("field1", typeof(TestCase15.Class0).GetField("Field1")!) }); } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class1SerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class1SerdeTypeInfo.verified.cs index 322b78ba..7d3fc971 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class1SerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.ArrayOfGenerateSerialize/TestCase15.Class1SerdeTypeInfo.verified.cs @@ -4,8 +4,8 @@ partial class TestCase15 internal static class Class1SerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("field0", typeof(Class1).GetField("Field0")!), -("field1", typeof(Class1).GetField("Field1")!) +("field0", typeof(TestCase15.Class1).GetField("Field0")!), +("field1", typeof(TestCase15.Class1).GetField("Field1")!) }); } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.CSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.CSerdeTypeInfo.verified.cs index e041800e..a1b5d6f9 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.CSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.CSerdeTypeInfo.verified.cs @@ -3,9 +3,9 @@ namespace Some.Nested.Namespace; internal static class CSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("colorInt", typeof(C).GetField("ColorInt")!), -("colorByte", typeof(C).GetField("ColorByte")!), -("colorLong", typeof(C).GetField("ColorLong")!), -("colorULong", typeof(C).GetField("ColorULong")!) +("colorInt", typeof(Some.Nested.Namespace.C).GetField("ColorInt")!), +("colorByte", typeof(Some.Nested.Namespace.C).GetField("ColorByte")!), +("colorLong", typeof(Some.Nested.Namespace.C).GetField("ColorLong")!), +("colorULong", typeof(Some.Nested.Namespace.C).GetField("ColorULong")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorByteSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorByteSerdeTypeInfo.verified.cs index 4387900e..04649101 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorByteSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorByteSerdeTypeInfo.verified.cs @@ -3,8 +3,8 @@ namespace Some.Nested.Namespace; internal static class ColorByteSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorByte).GetField("Red")!), -("green", typeof(ColorByte).GetField("Green")!), -("blue", typeof(ColorByte).GetField("Blue")!) +("red", typeof(Some.Nested.Namespace.ColorByte).GetField("Red")!), +("green", typeof(Some.Nested.Namespace.ColorByte).GetField("Green")!), +("blue", typeof(Some.Nested.Namespace.ColorByte).GetField("Blue")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorIntSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorIntSerdeTypeInfo.verified.cs index d862ab5c..3d6b1f3b 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorIntSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorIntSerdeTypeInfo.verified.cs @@ -3,8 +3,8 @@ namespace Some.Nested.Namespace; internal static class ColorIntSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorInt).GetField("Red")!), -("green", typeof(ColorInt).GetField("Green")!), -("blue", typeof(ColorInt).GetField("Blue")!) +("red", typeof(Some.Nested.Namespace.ColorInt).GetField("Red")!), +("green", typeof(Some.Nested.Namespace.ColorInt).GetField("Green")!), +("blue", typeof(Some.Nested.Namespace.ColorInt).GetField("Blue")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorLongSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorLongSerdeTypeInfo.verified.cs index e7a59ef1..a3a4dd48 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorLongSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorLongSerdeTypeInfo.verified.cs @@ -3,8 +3,8 @@ namespace Some.Nested.Namespace; internal static class ColorLongSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorLong).GetField("Red")!), -("green", typeof(ColorLong).GetField("Green")!), -("blue", typeof(ColorLong).GetField("Blue")!) +("red", typeof(Some.Nested.Namespace.ColorLong).GetField("Red")!), +("green", typeof(Some.Nested.Namespace.ColorLong).GetField("Green")!), +("blue", typeof(Some.Nested.Namespace.ColorLong).GetField("Blue")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorULongSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorULongSerdeTypeInfo.verified.cs index 7770672a..7113d50e 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorULongSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.EnumMember/Some.Nested.Namespace.ColorULongSerdeTypeInfo.verified.cs @@ -3,8 +3,8 @@ namespace Some.Nested.Namespace; internal static class ColorULongSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorULong).GetField("Red")!), -("green", typeof(ColorULong).GetField("Green")!), -("blue", typeof(ColorULong).GetField("Blue")!) +("red", typeof(Some.Nested.Namespace.ColorULong).GetField("Red")!), +("green", typeof(Some.Nested.Namespace.ColorULong).GetField("Green")!), +("blue", typeof(Some.Nested.Namespace.ColorULong).GetField("Blue")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/BIND_OPTSSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/BIND_OPTSSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..f06b61b7 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/BIND_OPTSSerdeTypeInfo.verified.cs @@ -0,0 +1,10 @@ +//HintName: BIND_OPTSSerdeTypeInfo.cs +internal static class BIND_OPTSSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("cbStruct", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("cbStruct")!), +("dwTickCountDeadline", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("dwTickCountDeadline")!), +("grfFlags", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfFlags")!), +("grfMode", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfMode")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrap.IDeserialize.verified.cs index d61cf3bc..901190ae 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrap.IDeserialize.verified.cs @@ -8,89 +8,53 @@ partial record struct OPTSWrap : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_cbstruct = default !; + int _l_dwtickcountdeadline = default !; + int _l_grfflags = default !; + int _l_grfmode = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = BIND_OPTSSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "cbStruct", - "dwTickCountDeadline", - "grfFlags", - "grfMode" - }; - return deserializer.DeserializeType("BIND_OPTS", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "System.Runtime.InteropServices.ComTypes.BIND_OPTS"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("cbStruct"u8): - return 1; - case (byte)'d'when s.SequenceEqual("dwTickCountDeadline"u8): - return 2; - case (byte)'g'when s.SequenceEqual("grfFlags"u8): - return 3; - case (byte)'g'when s.SequenceEqual("grfMode"u8): - return 4; - default: - return 0; - } + case 0: + _l_cbstruct = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_dwtickcountdeadline = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_grfflags = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case 3: + _l_grfmode = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 3; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - System.Runtime.InteropServices.ComTypes.BIND_OPTS Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111) { - int _l_cbstruct = default !; - int _l_dwtickcountdeadline = default !; - int _l_grfflags = default !; - int _l_grfmode = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_cbstruct = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_dwtickcountdeadline = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_grfflags = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - case 4: - _l_grfmode = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 3; - break; - } - } - - if (_r_assignedValid != 0b1111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() - { - cbStruct = _l_cbstruct, - dwTickCountDeadline = _l_dwtickcountdeadline, - grfFlags = _l_grfflags, - grfMode = _l_grfmode, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() + { + cbStruct = _l_cbstruct, + dwTickCountDeadline = _l_dwtickcountdeadline, + grfFlags = _l_grfflags, + grfMode = _l_grfmode, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrapSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrapSerdeTypeInfo.verified.cs deleted file mode 100644 index 98b0bb1e..00000000 --- a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/OPTSWrapSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: OPTSWrapSerdeTypeInfo.cs -internal static class OPTSWrapSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("value", typeof(OPTSWrap).GetProperty("Value")!) - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/S.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/S.IDeserialize.verified.cs index 37b7a769..6f4075ae 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/S.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests.NestedExplicitSerializeWrapper/S.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial struct S : Serde.IDeserialize { static S Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + System.Collections.Immutable.ImmutableArray _l_opts = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = SSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Opts" - }; - return deserializer.DeserializeType("S", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "S"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'o'when s.SequenceEqual("opts"u8): - return 1; - default: - return 0; - } + case 0: + _l_opts = typeDeserialize.ReadValue, Serde.ImmutableArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - S Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - System.Collections.Immutable.ImmutableArray _l_opts = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_opts = d.GetNextValue, Serde.ImmutableArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new S() - { - Opts = _l_opts, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new S() + { + Opts = _l_opts, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.SerializeOnlyWrapper/SectionSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.SerializeOnlyWrapper/SectionSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..465d11c5 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/SerializeTests.SerializeOnlyWrapper/SectionSerdeTypeInfo.verified.cs @@ -0,0 +1,8 @@ +//HintName: SectionSerdeTypeInfo.cs +internal static class SectionSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("mask", typeof(System.Collections.Specialized.BitVector32.Section).GetProperty("Mask")!), +("offset", typeof(System.Collections.Specialized.BitVector32.Section).GetProperty("Offset")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.SerializeOnlyWrapper/SectionWrapSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.SerializeOnlyWrapper/SectionWrapSerdeTypeInfo.verified.cs deleted file mode 100644 index c0055a88..00000000 --- a/test/Serde.Generation.Test/test_output/SerializeTests.SerializeOnlyWrapper/SectionWrapSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: SectionWrapSerdeTypeInfo.cs -internal static class SectionWrapSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("value", typeof(SectionWrap).GetProperty("Value")!) - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.TypeNotPartial/CSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.TypeNotPartial/CSerdeTypeInfo.verified.cs deleted file mode 100644 index c4798e29..00000000 --- a/test/Serde.Generation.Test/test_output/SerializeTests.TypeNotPartial/CSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: CSerdeTypeInfo.cs -internal static class CSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { - - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests.TypeNotPartial/SSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests.TypeNotPartial/SSerdeTypeInfo.verified.cs deleted file mode 100644 index fc42ce89..00000000 --- a/test/Serde.Generation.Test/test_output/SerializeTests.TypeNotPartial/SSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: SSerdeTypeInfo.cs -internal static class SSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { - - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/SerializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/SerializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs index 3b60227d..3032a166 100644 --- a/test/Serde.Generation.Test/test_output/SerializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/SerializeTests/NestedPartialClasses#A.B.C.DSerdeTypeInfo.verified.cs @@ -8,7 +8,7 @@ partial class C internal static class DSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("field", typeof(D).GetField("Field")!) +("field", typeof(A.B.C.D).GetField("Field")!) }); } } diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/BIND_OPTSSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/BIND_OPTSSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..f06b61b7 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/BIND_OPTSSerdeTypeInfo.verified.cs @@ -0,0 +1,10 @@ +//HintName: BIND_OPTSSerdeTypeInfo.cs +internal static class BIND_OPTSSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("cbStruct", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("cbStruct")!), +("dwTickCountDeadline", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("dwTickCountDeadline")!), +("grfFlags", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfFlags")!), +("grfMode", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfMode")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrap.IDeserialize.verified.cs index d61cf3bc..901190ae 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrap.IDeserialize.verified.cs @@ -8,89 +8,53 @@ partial record struct OPTSWrap : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_cbstruct = default !; + int _l_dwtickcountdeadline = default !; + int _l_grfflags = default !; + int _l_grfmode = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = BIND_OPTSSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "cbStruct", - "dwTickCountDeadline", - "grfFlags", - "grfMode" - }; - return deserializer.DeserializeType("BIND_OPTS", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "System.Runtime.InteropServices.ComTypes.BIND_OPTS"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("cbStruct"u8): - return 1; - case (byte)'d'when s.SequenceEqual("dwTickCountDeadline"u8): - return 2; - case (byte)'g'when s.SequenceEqual("grfFlags"u8): - return 3; - case (byte)'g'when s.SequenceEqual("grfMode"u8): - return 4; - default: - return 0; - } + case 0: + _l_cbstruct = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_dwtickcountdeadline = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_grfflags = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case 3: + _l_grfmode = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 3; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - System.Runtime.InteropServices.ComTypes.BIND_OPTS Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111) { - int _l_cbstruct = default !; - int _l_dwtickcountdeadline = default !; - int _l_grfflags = default !; - int _l_grfmode = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_cbstruct = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_dwtickcountdeadline = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_grfflags = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - case 4: - _l_grfmode = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 3; - break; - } - } - - if (_r_assignedValid != 0b1111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() - { - cbStruct = _l_cbstruct, - dwTickCountDeadline = _l_dwtickcountdeadline, - grfFlags = _l_grfflags, - grfMode = _l_grfmode, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() + { + cbStruct = _l_cbstruct, + dwTickCountDeadline = _l_dwtickcountdeadline, + grfFlags = _l_grfflags, + grfMode = _l_grfmode, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrapSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrapSerdeTypeInfo.verified.cs deleted file mode 100644 index 98b0bb1e..00000000 --- a/test/Serde.Generation.Test/test_output/WrapperTests.GenerateSerdeWrap/OPTSWrapSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,7 +0,0 @@ -//HintName: OPTSWrapSerdeTypeInfo.cs -internal static class OPTSWrapSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("value", typeof(OPTSWrap).GetProperty("Value")!) - }); -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelList.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelList.IDeserialize.verified.cs index efdce11e..2dc55d93 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelList.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelList.IDeserialize.verified.cs @@ -10,63 +10,36 @@ partial record struct ChannelList : Serde.IDeserialize { static Test.ChannelList Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + System.Collections.Immutable.ImmutableArray _l_channels = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = ChannelListSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Channels" - }; - return deserializer.DeserializeType("ChannelList", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Test.ChannelList"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("channels"u8): - return 1; - default: - return 0; - } + case 0: + _l_channels = typeDeserialize.ReadValue, ImmutableArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Test.ChannelList Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - System.Collections.Immutable.ImmutableArray _l_channels = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_channels = d.GetNextValue, ImmutableArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Test.ChannelList() - { - Channels = _l_channels, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Test.ChannelList() + { + Channels = _l_channels, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelListSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelListSerdeTypeInfo.verified.cs index 9e279ae2..c8427c4f 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelListSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelListSerdeTypeInfo.verified.cs @@ -3,6 +3,6 @@ namespace Test; internal static class ChannelListSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("channels", typeof(ChannelList).GetProperty("Channels")!) +("channels", typeof(Test.ChannelList).GetProperty("Channels")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelSerdeTypeInfo.verified.cs index fff8317d..ae5e76ca 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.ImmutableArrayEnumDeserialize/Test.ChannelSerdeTypeInfo.verified.cs @@ -3,8 +3,8 @@ namespace Test; internal static class ChannelSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("a", typeof(Channel).GetField("A")!), -("b", typeof(Channel).GetField("B")!), -("c", typeof(Channel).GetField("C")!) +("a", typeof(Test.Channel).GetField("A")!), +("b", typeof(Test.Channel).GetField("B")!), +("c", typeof(Test.Channel).GetField("C")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/BIND_OPTSSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/BIND_OPTSSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..f06b61b7 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/BIND_OPTSSerdeTypeInfo.verified.cs @@ -0,0 +1,10 @@ +//HintName: BIND_OPTSSerdeTypeInfo.cs +internal static class BIND_OPTSSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("cbStruct", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("cbStruct")!), +("dwTickCountDeadline", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("dwTickCountDeadline")!), +("grfFlags", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfFlags")!), +("grfMode", typeof(System.Runtime.InteropServices.ComTypes.BIND_OPTS).GetField("grfMode")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/C.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/C.IDeserialize.verified.cs index 75261cc6..a4dba222 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/C.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/C.IDeserialize.verified.cs @@ -8,62 +8,35 @@ partial class C : Serde.IDeserialize { static C Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + System.Runtime.InteropServices.ComTypes.BIND_OPTS _l_s = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = CSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "S" - }; - return deserializer.DeserializeType("C", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "C"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'s'when s.SequenceEqual("s"u8): - return 1; - default: - return 0; - } + case 0: + _l_s = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - C Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - System.Runtime.InteropServices.ComTypes.BIND_OPTS _l_s = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_s = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new C() - { - S = _l_s, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new C() + { + S = _l_s, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/OPTSWrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/OPTSWrap.IDeserialize.verified.cs index d61cf3bc..901190ae 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/OPTSWrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.NestedDeserializeWrap/OPTSWrap.IDeserialize.verified.cs @@ -8,89 +8,53 @@ partial record struct OPTSWrap : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_cbstruct = default !; + int _l_dwtickcountdeadline = default !; + int _l_grfflags = default !; + int _l_grfmode = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = BIND_OPTSSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "cbStruct", - "dwTickCountDeadline", - "grfFlags", - "grfMode" - }; - return deserializer.DeserializeType("BIND_OPTS", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "System.Runtime.InteropServices.ComTypes.BIND_OPTS"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c'when s.SequenceEqual("cbStruct"u8): - return 1; - case (byte)'d'when s.SequenceEqual("dwTickCountDeadline"u8): - return 2; - case (byte)'g'when s.SequenceEqual("grfFlags"u8): - return 3; - case (byte)'g'when s.SequenceEqual("grfMode"u8): - return 4; - default: - return 0; - } + case 0: + _l_cbstruct = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_dwtickcountdeadline = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case 2: + _l_grfflags = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 2; + break; + case 3: + _l_grfmode = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 3; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - System.Runtime.InteropServices.ComTypes.BIND_OPTS Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111) { - int _l_cbstruct = default !; - int _l_dwtickcountdeadline = default !; - int _l_grfflags = default !; - int _l_grfmode = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_cbstruct = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_dwtickcountdeadline = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - case 3: - _l_grfflags = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 2; - break; - case 4: - _l_grfmode = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 3; - break; - } - } - - if (_r_assignedValid != 0b1111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() - { - cbStruct = _l_cbstruct, - dwTickCountDeadline = _l_dwtickcountdeadline, - grfFlags = _l_grfflags, - grfMode = _l_grfmode, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new System.Runtime.InteropServices.ComTypes.BIND_OPTS() + { + cbStruct = _l_cbstruct, + dwTickCountDeadline = _l_dwtickcountdeadline, + grfFlags = _l_grfflags, + grfMode = _l_grfmode, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.NestedExplicitWrapper/Outer.SectionSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.NestedExplicitWrapper/Outer.SectionSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..98c4428a --- /dev/null +++ b/test/Serde.Generation.Test/test_output/WrapperTests.NestedExplicitWrapper/Outer.SectionSerdeTypeInfo.verified.cs @@ -0,0 +1,11 @@ +//HintName: Outer.SectionSerdeTypeInfo.cs +partial class Outer +{ + internal static class SectionSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("mask", typeof(System.Collections.Specialized.BitVector32.Section).GetProperty("Mask")!), +("offset", typeof(System.Collections.Specialized.BitVector32.Section).GetProperty("Offset")!) + }); +} +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.NestedExplicitWrapper/Outer.SectionWrapSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.NestedExplicitWrapper/Outer.SectionWrapSerdeTypeInfo.verified.cs deleted file mode 100644 index 724ef178..00000000 --- a/test/Serde.Generation.Test/test_output/WrapperTests.NestedExplicitWrapper/Outer.SectionWrapSerdeTypeInfo.verified.cs +++ /dev/null @@ -1,10 +0,0 @@ -//HintName: Outer.SectionWrapSerdeTypeInfo.cs -partial class Outer -{ - internal static class SectionWrapSerdeTypeInfo -{ - internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("value", typeof(SectionWrap).GetProperty("Value")!) - }); -} -} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..23d1660a --- /dev/null +++ b/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointSerdeTypeInfo.verified.cs @@ -0,0 +1,8 @@ +//HintName: PointSerdeTypeInfo.cs +internal static class PointSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("x", typeof(Point).GetField("X")!), +("y", typeof(Point).GetField("Y")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointWrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointWrap.IDeserialize.verified.cs index 77a8421f..09ef3fbf 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointWrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.PointWrap/PointWrap.IDeserialize.verified.cs @@ -8,71 +8,41 @@ partial struct PointWrap : Serde.IDeserialize { static Point Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_x = default !; + int _l_y = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = PointSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "X", - "Y" - }; - return deserializer.DeserializeType("Point", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Point"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'x'when s.SequenceEqual("x"u8): - return 1; - case (byte)'y'when s.SequenceEqual("y"u8): - return 2; - default: - return 0; - } + case 0: + _l_x = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_y = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Point Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - int _l_x = default !; - int _l_y = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_x = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_y = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Point() - { - X = _l_x, - Y = _l_y, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Point() + { + X = _l_x, + Y = _l_y, + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.PositionalRecordDeserialize/R.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.PositionalRecordDeserialize/R.IDeserialize.verified.cs index 4671cd6e..28805c9f 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.PositionalRecordDeserialize/R.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.PositionalRecordDeserialize/R.IDeserialize.verified.cs @@ -8,69 +8,39 @@ partial record R : Serde.IDeserialize { static R Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_a = default !; + string _l_b = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = RSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "A", - "B" - }; - return deserializer.DeserializeType("R", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "R"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'a'when s.SequenceEqual("a"u8): - return 1; - case (byte)'b'when s.SequenceEqual("b"u8): - return 2; - default: - return 0; - } + case 0: + _l_a = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_b = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - R Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - int _l_a = default !; - string _l_b = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_a = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_b = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new R(_l_a, _l_b) - { - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new R(_l_a, _l_b) + { + }; + return newType; } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.Parent.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.Parent.IDeserialize.verified.cs index 25459c88..02d0f0f5 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.Parent.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.Parent.IDeserialize.verified.cs @@ -10,63 +10,36 @@ partial record Parent : Serde.IDeserialize { static Test.Parent Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + Recursive _l_r = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = ParentSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "R" - }; - return deserializer.DeserializeType("Parent", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Test.Parent"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'r'when s.SequenceEqual("r"u8): - return 1; - default: - return 0; - } + case 0: + _l_r = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Test.Parent Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - Recursive _l_r = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_r = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Test.Parent() - { - R = _l_r, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Test.Parent() + { + R = _l_r, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.ParentSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.ParentSerdeTypeInfo.verified.cs index 49a2fa7a..baa8b9b5 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.ParentSerdeTypeInfo.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.ParentSerdeTypeInfo.verified.cs @@ -3,6 +3,6 @@ namespace Test; internal static class ParentSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("r", typeof(Parent).GetProperty("R")!) +("r", typeof(Test.Parent).GetProperty("R")!) }); } \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveSerdeTypeInfo.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveSerdeTypeInfo.verified.cs new file mode 100644 index 00000000..face0385 --- /dev/null +++ b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveSerdeTypeInfo.verified.cs @@ -0,0 +1,8 @@ +//HintName: Test.RecursiveSerdeTypeInfo.cs +namespace Test; +internal static class RecursiveSerdeTypeInfo +{ + internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { +("next", typeof(Recursive).GetProperty("Next")!) + }); +} \ No newline at end of file diff --git a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveWrap.IDeserialize.verified.cs b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveWrap.IDeserialize.verified.cs index 9822f9eb..a0f11cb6 100644 --- a/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveWrap.IDeserialize.verified.cs +++ b/test/Serde.Generation.Test/test_output/WrapperTests.RecursiveType/Test.RecursiveWrap.IDeserialize.verified.cs @@ -10,63 +10,36 @@ partial record struct RecursiveWrap : Serde.IDeserialize { static Recursive Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + Recursive? _l_next = default !; + byte _r_assignedValid = 0b1; + var _l_typeInfo = RecursiveSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Next" - }; - return deserializer.DeserializeType("Recursive", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Recursive"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'n'when s.SequenceEqual("next"u8): - return 1; - default: - return 0; - } + case 0: + _l_next = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Recursive Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - Recursive? _l_next = default !; - byte _r_assignedValid = 0b1; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_next = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Recursive() - { - Next = _l_next, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Recursive() + { + Next = _l_next, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Test/CustomImplTests.cs b/test/Serde.Test/CustomImplTests.cs index efbf55d9..fe933f46 100644 --- a/test/Serde.Test/CustomImplTests.cs +++ b/test/Serde.Test/CustomImplTests.cs @@ -26,7 +26,7 @@ static RgbWithFieldMap IDeserialize.Deserialize(IDeserializer d int green = default; int blue = default; int index; - while ((index = deType.TryReadIndex(fieldMap)) != IDeserializeType.EndOfType) + while ((index = deType.TryReadIndex(fieldMap, out var errorName)) != IDeserializeType.EndOfType) { switch (index) { diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs index ad221625..21e67b52 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs @@ -4,9 +4,9 @@ partial record AllInOne internal static class ColorEnumSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorEnum).GetField("Red")!), -("blue", typeof(ColorEnum).GetField("Blue")!), -("green", typeof(ColorEnum).GetField("Green")!) +("red", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Red")!), +("blue", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Blue")!), +("green", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Green")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs index 32c47097..12d3b02c 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs @@ -9,198 +9,126 @@ partial record AllInOne : Serde.IDeserialize { static Serde.Test.AllInOne Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + bool _l_boolfield = default !; + char _l_charfield = default !; + byte _l_bytefield = default !; + ushort _l_ushortfield = default !; + uint _l_uintfield = default !; + ulong _l_ulongfield = default !; + sbyte _l_sbytefield = default !; + short _l_shortfield = default !; + int _l_intfield = default !; + long _l_longfield = default !; + string _l_stringfield = default !; + string? _l_nullstringfield = default !; + uint[] _l_uintarr = default !; + int[][] _l_nestedarr = default !; + System.Collections.Immutable.ImmutableArray _l_intimm = default !; + Serde.Test.AllInOne.ColorEnum _l_color = default !; + ushort _r_assignedValid = 0b100000000000; + var _l_typeInfo = AllInOneSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "BoolField", - "CharField", - "ByteField", - "UShortField", - "UIntField", - "ULongField", - "SByteField", - "ShortField", - "IntField", - "LongField", - "StringField", - "NullStringField", - "UIntArr", - "NestedArr", - "IntImm", - "Color" - }; - return deserializer.DeserializeType("AllInOne", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.AllInOne"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'b' when s.SequenceEqual("boolField"u8): - return 1; - case (byte)'c' when s.SequenceEqual("charField"u8): - return 2; - case (byte)'b' when s.SequenceEqual("byteField"u8): - return 3; - case (byte)'u' when s.SequenceEqual("uShortField"u8): - return 4; - case (byte)'u' when s.SequenceEqual("uIntField"u8): - return 5; - case (byte)'u' when s.SequenceEqual("uLongField"u8): - return 6; - case (byte)'s' when s.SequenceEqual("sByteField"u8): - return 7; - case (byte)'s' when s.SequenceEqual("shortField"u8): - return 8; - case (byte)'i' when s.SequenceEqual("intField"u8): - return 9; - case (byte)'l' when s.SequenceEqual("longField"u8): - return 10; - case (byte)'s' when s.SequenceEqual("stringField"u8): - return 11; - case (byte)'n' when s.SequenceEqual("nullStringField"u8): - return 12; - case (byte)'u' when s.SequenceEqual("uIntArr"u8): - return 13; - case (byte)'n' when s.SequenceEqual("nestedArr"u8): - return 14; - case (byte)'i' when s.SequenceEqual("intImm"u8): - return 15; - case (byte)'c' when s.SequenceEqual("color"u8): - return 16; - default: - return 0; - } + case 0: + _l_boolfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 0; + break; + case 1: + _l_charfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 1; + break; + case 2: + _l_bytefield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 2; + break; + case 3: + _l_ushortfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 3; + break; + case 4: + _l_uintfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 4; + break; + case 5: + _l_ulongfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 5; + break; + case 6: + _l_sbytefield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 6; + break; + case 7: + _l_shortfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 7; + break; + case 8: + _l_intfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 8; + break; + case 9: + _l_longfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 9; + break; + case 10: + _l_stringfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 10; + break; + case 11: + _l_nullstringfield = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((ushort)1) << 11; + break; + case 12: + _l_uintarr = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((ushort)1) << 12; + break; + case 13: + _l_nestedarr = typeDeserialize.ReadValue>>(_l_index_); + _r_assignedValid |= ((ushort)1) << 13; + break; + case 14: + _l_intimm = typeDeserialize.ReadValue, ImmutableArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((ushort)1) << 14; + break; + case 15: + _l_color = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 15; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.AllInOne Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111111111111111) { - bool _l_boolfield = default !; - char _l_charfield = default !; - byte _l_bytefield = default !; - ushort _l_ushortfield = default !; - uint _l_uintfield = default !; - ulong _l_ulongfield = default !; - sbyte _l_sbytefield = default !; - short _l_shortfield = default !; - int _l_intfield = default !; - long _l_longfield = default !; - string _l_stringfield = default !; - string? _l_nullstringfield = default !; - uint[] _l_uintarr = default !; - int[][] _l_nestedarr = default !; - System.Collections.Immutable.ImmutableArray _l_intimm = default !; - Serde.Test.AllInOne.ColorEnum _l_color = default !; - ushort _r_assignedValid = 0b100000000000; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_boolfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 0; - break; - case 2: - _l_charfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 1; - break; - case 3: - _l_bytefield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 2; - break; - case 4: - _l_ushortfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 3; - break; - case 5: - _l_uintfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 4; - break; - case 6: - _l_ulongfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 5; - break; - case 7: - _l_sbytefield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 6; - break; - case 8: - _l_shortfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 7; - break; - case 9: - _l_intfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 8; - break; - case 10: - _l_longfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 9; - break; - case 11: - _l_stringfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 10; - break; - case 12: - _l_nullstringfield = d.GetNextValue>(); - _r_assignedValid |= ((ushort)1) << 11; - break; - case 13: - _l_uintarr = d.GetNextValue>(); - _r_assignedValid |= ((ushort)1) << 12; - break; - case 14: - _l_nestedarr = d.GetNextValue>>(); - _r_assignedValid |= ((ushort)1) << 13; - break; - case 15: - _l_intimm = d.GetNextValue, ImmutableArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((ushort)1) << 14; - break; - case 16: - _l_color = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 15; - break; - } - } - - if (_r_assignedValid != 0b1111111111111111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.AllInOne() - { - BoolField = _l_boolfield, - CharField = _l_charfield, - ByteField = _l_bytefield, - UShortField = _l_ushortfield, - UIntField = _l_uintfield, - ULongField = _l_ulongfield, - SByteField = _l_sbytefield, - ShortField = _l_shortfield, - IntField = _l_intfield, - LongField = _l_longfield, - StringField = _l_stringfield, - NullStringField = _l_nullstringfield, - UIntArr = _l_uintarr, - NestedArr = _l_nestedarr, - IntImm = _l_intimm, - Color = _l_color, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.AllInOne() + { + BoolField = _l_boolfield, + CharField = _l_charfield, + ByteField = _l_bytefield, + UShortField = _l_ushortfield, + UIntField = _l_uintfield, + ULongField = _l_ulongfield, + SByteField = _l_sbytefield, + ShortField = _l_shortfield, + IntField = _l_intfield, + LongField = _l_longfield, + StringField = _l_stringfield, + NullStringField = _l_nullstringfield, + UIntArr = _l_uintarr, + NestedArr = _l_nestedarr, + IntImm = _l_intimm, + Color = _l_color, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs index 50912c51..79728a45 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs @@ -2,21 +2,21 @@ internal static class AllInOneSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("boolField", typeof(AllInOne).GetField("BoolField")!), -("charField", typeof(AllInOne).GetField("CharField")!), -("byteField", typeof(AllInOne).GetField("ByteField")!), -("uShortField", typeof(AllInOne).GetField("UShortField")!), -("uIntField", typeof(AllInOne).GetField("UIntField")!), -("uLongField", typeof(AllInOne).GetField("ULongField")!), -("sByteField", typeof(AllInOne).GetField("SByteField")!), -("shortField", typeof(AllInOne).GetField("ShortField")!), -("intField", typeof(AllInOne).GetField("IntField")!), -("longField", typeof(AllInOne).GetField("LongField")!), -("stringField", typeof(AllInOne).GetField("StringField")!), -("nullStringField", typeof(AllInOne).GetField("NullStringField")!), -("uIntArr", typeof(AllInOne).GetField("UIntArr")!), -("nestedArr", typeof(AllInOne).GetField("NestedArr")!), -("intImm", typeof(AllInOne).GetField("IntImm")!), -("color", typeof(AllInOne).GetField("Color")!) +("boolField", typeof(Serde.Test.AllInOne).GetField("BoolField")!), +("charField", typeof(Serde.Test.AllInOne).GetField("CharField")!), +("byteField", typeof(Serde.Test.AllInOne).GetField("ByteField")!), +("uShortField", typeof(Serde.Test.AllInOne).GetField("UShortField")!), +("uIntField", typeof(Serde.Test.AllInOne).GetField("UIntField")!), +("uLongField", typeof(Serde.Test.AllInOne).GetField("ULongField")!), +("sByteField", typeof(Serde.Test.AllInOne).GetField("SByteField")!), +("shortField", typeof(Serde.Test.AllInOne).GetField("ShortField")!), +("intField", typeof(Serde.Test.AllInOne).GetField("IntField")!), +("longField", typeof(Serde.Test.AllInOne).GetField("LongField")!), +("stringField", typeof(Serde.Test.AllInOne).GetField("StringField")!), +("nullStringField", typeof(Serde.Test.AllInOne).GetField("NullStringField")!), +("uIntArr", typeof(Serde.Test.AllInOne).GetField("UIntArr")!), +("nestedArr", typeof(Serde.Test.AllInOne).GetField("NestedArr")!), +("intImm", typeof(Serde.Test.AllInOne).GetField("IntImm")!), +("color", typeof(Serde.Test.AllInOne).GetField("Color")!) }); } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.CustomImplTests.RgbWithFieldMapSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.CustomImplTests.RgbWithFieldMapSerdeTypeInfo.cs index 09e68e5d..75fc2e25 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.CustomImplTests.RgbWithFieldMapSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.CustomImplTests.RgbWithFieldMapSerdeTypeInfo.cs @@ -4,9 +4,9 @@ partial class CustomImplTests internal static class RgbWithFieldMapSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(RgbWithFieldMap).GetField("Red")!), -("green", typeof(RgbWithFieldMap).GetField("Green")!), -("blue", typeof(RgbWithFieldMap).GetField("Blue")!) +("red", typeof(Serde.Test.CustomImplTests.RgbWithFieldMap).GetField("Red")!), +("green", typeof(Serde.Test.CustomImplTests.RgbWithFieldMap).GetField("Green")!), +("blue", typeof(Serde.Test.CustomImplTests.RgbWithFieldMap).GetField("Blue")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType.IDeserialize.cs index ca3b7fd3..27cb46a4 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType.IDeserialize.cs @@ -11,63 +11,36 @@ partial record struct CustomArrayWrapExplicitOnType : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + Serde.Test.GenericWrapperTests.CustomImArray2 _l_a = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = CustomArrayWrapExplicitOnTypeSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "A" - }; - return deserializer.DeserializeType("CustomArrayWrapExplicitOnType", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'a' when s.SequenceEqual("a"u8): - return 1; - default: - return 0; - } + case 0: + _l_a = typeDeserialize.ReadValue, Serde.Test.GenericWrapperTests.CustomImArray2Wrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - Serde.Test.GenericWrapperTests.CustomImArray2 _l_a = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_a = d.GetNextValue, Serde.Test.GenericWrapperTests.CustomImArray2Wrap.DeserializeImpl>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType() - { - A = _l_a, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType() + { + A = _l_a, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnTypeSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnTypeSerdeTypeInfo.cs index 9130c89a..e3a1e354 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnTypeSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnTypeSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class GenericWrapperTests internal static class CustomArrayWrapExplicitOnTypeSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("a", typeof(CustomArrayWrapExplicitOnType).GetField("A")!) +("a", typeof(Serde.Test.GenericWrapperTests.CustomArrayWrapExplicitOnType).GetField("A")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember.IDeserialize.cs index 2d4ee032..46af660e 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember.IDeserialize.cs @@ -11,63 +11,36 @@ partial record struct CustomImArrayExplicitWrapOnMember : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + Serde.Test.GenericWrapperTests.CustomImArray _l_a = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = CustomImArrayExplicitWrapOnMemberSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "A" - }; - return deserializer.DeserializeType("CustomImArrayExplicitWrapOnMember", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'a' when s.SequenceEqual("a"u8): - return 1; - default: - return 0; - } + case 0: + _l_a = typeDeserialize.ReadValue, Serde.Test.GenericWrapperTests.CustomImArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - Serde.Test.GenericWrapperTests.CustomImArray _l_a = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_a = d.GetNextValue, Serde.Test.GenericWrapperTests.CustomImArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember() - { - A = _l_a, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember() + { + A = _l_a, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMemberSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMemberSerdeTypeInfo.cs index f485eaaf..cb9a930b 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMemberSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMemberSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class GenericWrapperTests internal static class CustomImArrayExplicitWrapOnMemberSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("a", typeof(CustomImArrayExplicitWrapOnMember).GetField("A")!) +("a", typeof(Serde.Test.GenericWrapperTests.CustomImArrayExplicitWrapOnMember).GetField("A")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknown.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknown.IDeserialize.cs index b222ee70..74e6bcb1 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknown.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknown.IDeserialize.cs @@ -11,72 +11,42 @@ partial record struct DenyUnknown : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + string _l_present = default !; + string? _l_missing = default !; + byte _r_assignedValid = 0b10; + var _l_typeInfo = DenyUnknownSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Present", - "Missing" - }; - return deserializer.DeserializeType("DenyUnknown", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.DenyUnknown"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'p' when s.SequenceEqual("present"u8): - return 1; - case (byte)'m' when s.SequenceEqual("missing"u8): - return 2; - default: - throw new InvalidDeserializeValueException("Unexpected field or property name in type Serde.Test.JsonDeserializeTests.DenyUnknown: '" + System.Text.Encoding.UTF8.GetString(s) + "'"); - } + case 0: + _l_present = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_missing = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + throw new InvalidDeserializeValueException("Unexpected field or property name in type DenyUnknown: '" + _l_errorName + "'"); + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.DenyUnknown Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - string _l_present = default !; - string? _l_missing = default !; - byte _r_assignedValid = 0b10; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_present = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_missing = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.DenyUnknown() - { - Present = _l_present, - Missing = _l_missing, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.DenyUnknown() + { + Present = _l_present, + Missing = _l_missing, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknownSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknownSerdeTypeInfo.cs index 639df712..0493ac0c 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknownSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.DenyUnknownSerdeTypeInfo.cs @@ -4,8 +4,8 @@ partial class JsonDeserializeTests internal static class DenyUnknownSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("present", typeof(DenyUnknown).GetProperty("Present")!), -("missing", typeof(DenyUnknown).GetProperty("Missing")!) +("present", typeof(Serde.Test.JsonDeserializeTests.DenyUnknown).GetProperty("Present")!), +("missing", typeof(Serde.Test.JsonDeserializeTests.DenyUnknown).GetProperty("Missing")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembers.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembers.IDeserialize.cs index 6299f52c..e63615b0 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembers.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembers.IDeserialize.cs @@ -11,63 +11,36 @@ partial struct ExtraMembers : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_b = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = ExtraMembersSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "b" - }; - return deserializer.DeserializeType("ExtraMembers", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.ExtraMembers"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'b' when s.SequenceEqual("b"u8): - return 1; - default: - return 0; - } + case 0: + _l_b = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.ExtraMembers Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - int _l_b = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_b = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.ExtraMembers() - { - b = _l_b, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.ExtraMembers() + { + b = _l_b, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembersSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembersSerdeTypeInfo.cs index 6c742d05..e0cf8502 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembersSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ExtraMembersSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class JsonDeserializeTests internal static class ExtraMembersSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("b", typeof(ExtraMembers).GetField("b")!) +("b", typeof(Serde.Test.JsonDeserializeTests.ExtraMembers).GetField("b")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStruct.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStruct.IDeserialize.cs index d21c048c..37071be0 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStruct.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStruct.IDeserialize.cs @@ -11,63 +11,36 @@ partial struct IdStruct : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_id = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = IdStructSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Id" - }; - return deserializer.DeserializeType("IdStruct", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.IdStruct"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'i' when s.SequenceEqual("id"u8): - return 1; - default: - return 0; - } + case 0: + _l_id = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.IdStruct Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1) { - int _l_id = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_id = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - } - } - - if (_r_assignedValid != 0b1) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.IdStruct() - { - Id = _l_id, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.IdStruct() + { + Id = _l_id, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructList.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructList.IDeserialize.cs index 7c2c1411..b1760ea2 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructList.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructList.IDeserialize.cs @@ -11,72 +11,42 @@ partial record struct IdStructList : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + int _l_count = default !; + System.Collections.Generic.List _l_list = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = IdStructListSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Count", - "List" - }; - return deserializer.DeserializeType("IdStructList", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.IdStructList"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'c' when s.SequenceEqual("count"u8): - return 1; - case (byte)'l' when s.SequenceEqual("list"u8): - return 2; - default: - return 0; - } + case 0: + _l_count = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_list = typeDeserialize.ReadValue, ListWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.IdStructList Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - int _l_count = default !; - System.Collections.Generic.List _l_list = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_count = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_list = d.GetNextValue, ListWrap.DeserializeImpl>(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.IdStructList() - { - Count = _l_count, - List = _l_list, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.IdStructList() + { + Count = _l_count, + List = _l_list, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructListSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructListSerdeTypeInfo.cs index db5122e9..075fed87 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructListSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructListSerdeTypeInfo.cs @@ -4,8 +4,8 @@ partial class JsonDeserializeTests internal static class IdStructListSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("count", typeof(IdStructList).GetProperty("Count")!), -("list", typeof(IdStructList).GetProperty("List")!) +("count", typeof(Serde.Test.JsonDeserializeTests.IdStructList).GetProperty("Count")!), +("list", typeof(Serde.Test.JsonDeserializeTests.IdStructList).GetProperty("List")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructSerdeTypeInfo.cs index 71ae9ea3..933237d0 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.IdStructSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class JsonDeserializeTests internal static class IdStructSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("id", typeof(IdStruct).GetField("Id")!) +("id", typeof(Serde.Test.JsonDeserializeTests.IdStruct).GetField("Id")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFields.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFields.IDeserialize.cs index b3ea5088..4a5952d8 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFields.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFields.IDeserialize.cs @@ -11,72 +11,42 @@ partial class NullableFields : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + string? _l_s = default !; + System.Collections.Generic.Dictionary _l_dict = default !; + byte _r_assignedValid = 0b1; + var _l_typeInfo = NullableFieldsSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "S", - "Dict" - }; - return deserializer.DeserializeType("NullableFields", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.NullableFields"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'s' when s.SequenceEqual("s"u8): - return 1; - case (byte)'d' when s.SequenceEqual("dict"u8): - return 2; - default: - return 0; - } + case 0: + _l_s = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_dict = typeDeserialize.ReadValue, DictWrap.DeserializeImpl>>(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.NullableFields Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - string? _l_s = default !; - System.Collections.Generic.Dictionary _l_dict = default !; - byte _r_assignedValid = 0b1; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_s = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_dict = d.GetNextValue, DictWrap.DeserializeImpl>>(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.NullableFields() - { - S = _l_s, - Dict = _l_dict, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.NullableFields() + { + S = _l_s, + Dict = _l_dict, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFieldsSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFieldsSerdeTypeInfo.cs index c18c5f3a..f2f989ba 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFieldsSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.NullableFieldsSerdeTypeInfo.cs @@ -4,8 +4,8 @@ partial class JsonDeserializeTests internal static class NullableFieldsSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("s", typeof(NullableFields).GetField("S")!), -("dict", typeof(NullableFields).GetField("Dict")!) +("s", typeof(Serde.Test.JsonDeserializeTests.NullableFields).GetField("S")!), +("dict", typeof(Serde.Test.JsonDeserializeTests.NullableFields).GetField("Dict")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNull.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNull.IDeserialize.cs index bc23c356..4735bf5b 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNull.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNull.IDeserialize.cs @@ -11,72 +11,42 @@ partial record struct SetToNull : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + string _l_present = default !; + string? _l_missing = default !; + byte _r_assignedValid = 0b10; + var _l_typeInfo = SetToNullSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Present", - "Missing" - }; - return deserializer.DeserializeType("SetToNull", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.SetToNull"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'p' when s.SequenceEqual("present"u8): - return 1; - case (byte)'m' when s.SequenceEqual("missing"u8): - return 2; - default: - return 0; - } + case 0: + _l_present = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_missing = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.SetToNull Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - string _l_present = default !; - string? _l_missing = default !; - byte _r_assignedValid = 0b10; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_present = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_missing = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.SetToNull() - { - Present = _l_present, - Missing = _l_missing, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.SetToNull() + { + Present = _l_present, + Missing = _l_missing, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNullSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNullSerdeTypeInfo.cs index f38beae8..d90e60a8 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNullSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.SetToNullSerdeTypeInfo.cs @@ -4,8 +4,8 @@ partial class JsonDeserializeTests internal static class SetToNullSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("present", typeof(SetToNull).GetProperty("Present")!), -("missing", typeof(SetToNull).GetProperty("Missing")!) +("present", typeof(Serde.Test.JsonDeserializeTests.SetToNull).GetProperty("Present")!), +("missing", typeof(Serde.Test.JsonDeserializeTests.SetToNull).GetProperty("Missing")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissing.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissing.IDeserialize.cs index cd19cede..6fff32fe 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissing.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissing.IDeserialize.cs @@ -11,72 +11,42 @@ partial record struct ThrowMissing : Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + string _l_present = default !; + string? _l_missing = default !; + byte _r_assignedValid = 0b0; + var _l_typeInfo = ThrowMissingSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Present", - "Missing" - }; - return deserializer.DeserializeType("ThrowMissing", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.JsonDeserializeTests.ThrowMissing"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'p' when s.SequenceEqual("present"u8): - return 1; - case (byte)'m' when s.SequenceEqual("missing"u8): - return 2; - default: - return 0; - } + case 0: + _l_present = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((byte)1) << 0; + break; + case 1: + _l_missing = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((byte)1) << 1; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.JsonDeserializeTests.ThrowMissing Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b11) { - string _l_present = default !; - string? _l_missing = default !; - byte _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_present = d.GetNextValue(); - _r_assignedValid |= ((byte)1) << 0; - break; - case 2: - _l_missing = d.GetNextValue>(); - _r_assignedValid |= ((byte)1) << 1; - break; - } - } - - if (_r_assignedValid != 0b11) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.JsonDeserializeTests.ThrowMissing() - { - Present = _l_present, - Missing = _l_missing, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.JsonDeserializeTests.ThrowMissing() + { + Present = _l_present, + Missing = _l_missing, + }; + return newType; } } } diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissingSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissingSerdeTypeInfo.cs index a54a67fc..229fb742 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissingSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonDeserializeTests.ThrowMissingSerdeTypeInfo.cs @@ -4,8 +4,8 @@ partial class JsonDeserializeTests internal static class ThrowMissingSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("present", typeof(ThrowMissing).GetProperty("Present")!), -("missing", typeof(ThrowMissing).GetProperty("Missing")!) +("present", typeof(Serde.Test.JsonDeserializeTests.ThrowMissing).GetProperty("Present")!), +("missing", typeof(Serde.Test.JsonDeserializeTests.ThrowMissing).GetProperty("Missing")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonSerializerTests.NullableFieldsSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonSerializerTests.NullableFieldsSerdeTypeInfo.cs index cfe50332..66c2db91 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonSerializerTests.NullableFieldsSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.JsonSerializerTests.NullableFieldsSerdeTypeInfo.cs @@ -4,8 +4,8 @@ partial class JsonSerializerTests internal static class NullableFieldsSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("s", typeof(NullableFields).GetField("S")!), -("d", typeof(NullableFields).GetField("D")!) +("s", typeof(Serde.Test.JsonSerializerTests.NullableFields).GetField("S")!), +("d", typeof(Serde.Test.JsonSerializerTests.NullableFields).GetField("D")!) }); } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeType.IDeserialize.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeType.IDeserialize.cs index 1a91ea3a..bc93571a 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeType.IDeserialize.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeType.IDeserialize.cs @@ -9,630 +9,414 @@ partial struct MaxSizeType : Serde.IDeserialize { static Serde.Test.MaxSizeType Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + byte _l_field1 = default !; + byte _l_field2 = default !; + byte _l_field3 = default !; + byte _l_field4 = default !; + byte _l_field5 = default !; + byte _l_field6 = default !; + byte _l_field7 = default !; + byte _l_field8 = default !; + byte _l_field9 = default !; + byte _l_field10 = default !; + byte _l_field11 = default !; + byte _l_field12 = default !; + byte _l_field13 = default !; + byte _l_field14 = default !; + byte _l_field15 = default !; + byte _l_field16 = default !; + byte _l_field17 = default !; + byte _l_field18 = default !; + byte _l_field19 = default !; + byte _l_field20 = default !; + byte _l_field21 = default !; + byte _l_field22 = default !; + byte _l_field23 = default !; + byte _l_field24 = default !; + byte _l_field25 = default !; + byte _l_field26 = default !; + byte _l_field27 = default !; + byte _l_field28 = default !; + byte _l_field29 = default !; + byte _l_field30 = default !; + byte _l_field31 = default !; + byte _l_field32 = default !; + byte _l_field33 = default !; + byte _l_field34 = default !; + byte _l_field35 = default !; + byte _l_field36 = default !; + byte _l_field37 = default !; + byte _l_field38 = default !; + byte _l_field39 = default !; + byte _l_field40 = default !; + byte _l_field41 = default !; + byte _l_field42 = default !; + byte _l_field43 = default !; + byte _l_field44 = default !; + byte _l_field45 = default !; + byte _l_field46 = default !; + byte _l_field47 = default !; + byte _l_field48 = default !; + byte _l_field49 = default !; + byte _l_field50 = default !; + byte _l_field51 = default !; + byte _l_field52 = default !; + byte _l_field53 = default !; + byte _l_field54 = default !; + byte _l_field55 = default !; + byte _l_field56 = default !; + byte _l_field57 = default !; + byte _l_field58 = default !; + byte _l_field59 = default !; + byte _l_field60 = default !; + byte _l_field61 = default !; + byte _l_field62 = default !; + byte _l_field63 = default !; + byte _l_field64 = default !; + ulong _r_assignedValid = 0b0; + var _l_typeInfo = MaxSizeTypeSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "Field1", - "Field2", - "Field3", - "Field4", - "Field5", - "Field6", - "Field7", - "Field8", - "Field9", - "Field10", - "Field11", - "Field12", - "Field13", - "Field14", - "Field15", - "Field16", - "Field17", - "Field18", - "Field19", - "Field20", - "Field21", - "Field22", - "Field23", - "Field24", - "Field25", - "Field26", - "Field27", - "Field28", - "Field29", - "Field30", - "Field31", - "Field32", - "Field33", - "Field34", - "Field35", - "Field36", - "Field37", - "Field38", - "Field39", - "Field40", - "Field41", - "Field42", - "Field43", - "Field44", - "Field45", - "Field46", - "Field47", - "Field48", - "Field49", - "Field50", - "Field51", - "Field52", - "Field53", - "Field54", - "Field55", - "Field56", - "Field57", - "Field58", - "Field59", - "Field60", - "Field61", - "Field62", - "Field63", - "Field64" - }; - return deserializer.DeserializeType("MaxSizeType", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.MaxSizeType"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'f' when s.SequenceEqual("field1"u8): - return 1; - case (byte)'f' when s.SequenceEqual("field2"u8): - return 2; - case (byte)'f' when s.SequenceEqual("field3"u8): - return 3; - case (byte)'f' when s.SequenceEqual("field4"u8): - return 4; - case (byte)'f' when s.SequenceEqual("field5"u8): - return 5; - case (byte)'f' when s.SequenceEqual("field6"u8): - return 6; - case (byte)'f' when s.SequenceEqual("field7"u8): - return 7; - case (byte)'f' when s.SequenceEqual("field8"u8): - return 8; - case (byte)'f' when s.SequenceEqual("field9"u8): - return 9; - case (byte)'f' when s.SequenceEqual("field10"u8): - return 10; - case (byte)'f' when s.SequenceEqual("field11"u8): - return 11; - case (byte)'f' when s.SequenceEqual("field12"u8): - return 12; - case (byte)'f' when s.SequenceEqual("field13"u8): - return 13; - case (byte)'f' when s.SequenceEqual("field14"u8): - return 14; - case (byte)'f' when s.SequenceEqual("field15"u8): - return 15; - case (byte)'f' when s.SequenceEqual("field16"u8): - return 16; - case (byte)'f' when s.SequenceEqual("field17"u8): - return 17; - case (byte)'f' when s.SequenceEqual("field18"u8): - return 18; - case (byte)'f' when s.SequenceEqual("field19"u8): - return 19; - case (byte)'f' when s.SequenceEqual("field20"u8): - return 20; - case (byte)'f' when s.SequenceEqual("field21"u8): - return 21; - case (byte)'f' when s.SequenceEqual("field22"u8): - return 22; - case (byte)'f' when s.SequenceEqual("field23"u8): - return 23; - case (byte)'f' when s.SequenceEqual("field24"u8): - return 24; - case (byte)'f' when s.SequenceEqual("field25"u8): - return 25; - case (byte)'f' when s.SequenceEqual("field26"u8): - return 26; - case (byte)'f' when s.SequenceEqual("field27"u8): - return 27; - case (byte)'f' when s.SequenceEqual("field28"u8): - return 28; - case (byte)'f' when s.SequenceEqual("field29"u8): - return 29; - case (byte)'f' when s.SequenceEqual("field30"u8): - return 30; - case (byte)'f' when s.SequenceEqual("field31"u8): - return 31; - case (byte)'f' when s.SequenceEqual("field32"u8): - return 32; - case (byte)'f' when s.SequenceEqual("field33"u8): - return 33; - case (byte)'f' when s.SequenceEqual("field34"u8): - return 34; - case (byte)'f' when s.SequenceEqual("field35"u8): - return 35; - case (byte)'f' when s.SequenceEqual("field36"u8): - return 36; - case (byte)'f' when s.SequenceEqual("field37"u8): - return 37; - case (byte)'f' when s.SequenceEqual("field38"u8): - return 38; - case (byte)'f' when s.SequenceEqual("field39"u8): - return 39; - case (byte)'f' when s.SequenceEqual("field40"u8): - return 40; - case (byte)'f' when s.SequenceEqual("field41"u8): - return 41; - case (byte)'f' when s.SequenceEqual("field42"u8): - return 42; - case (byte)'f' when s.SequenceEqual("field43"u8): - return 43; - case (byte)'f' when s.SequenceEqual("field44"u8): - return 44; - case (byte)'f' when s.SequenceEqual("field45"u8): - return 45; - case (byte)'f' when s.SequenceEqual("field46"u8): - return 46; - case (byte)'f' when s.SequenceEqual("field47"u8): - return 47; - case (byte)'f' when s.SequenceEqual("field48"u8): - return 48; - case (byte)'f' when s.SequenceEqual("field49"u8): - return 49; - case (byte)'f' when s.SequenceEqual("field50"u8): - return 50; - case (byte)'f' when s.SequenceEqual("field51"u8): - return 51; - case (byte)'f' when s.SequenceEqual("field52"u8): - return 52; - case (byte)'f' when s.SequenceEqual("field53"u8): - return 53; - case (byte)'f' when s.SequenceEqual("field54"u8): - return 54; - case (byte)'f' when s.SequenceEqual("field55"u8): - return 55; - case (byte)'f' when s.SequenceEqual("field56"u8): - return 56; - case (byte)'f' when s.SequenceEqual("field57"u8): - return 57; - case (byte)'f' when s.SequenceEqual("field58"u8): - return 58; - case (byte)'f' when s.SequenceEqual("field59"u8): - return 59; - case (byte)'f' when s.SequenceEqual("field60"u8): - return 60; - case (byte)'f' when s.SequenceEqual("field61"u8): - return 61; - case (byte)'f' when s.SequenceEqual("field62"u8): - return 62; - case (byte)'f' when s.SequenceEqual("field63"u8): - return 63; - case (byte)'f' when s.SequenceEqual("field64"u8): - return 64; - default: - return 0; - } + case 0: + _l_field1 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 0; + break; + case 1: + _l_field2 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 1; + break; + case 2: + _l_field3 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 2; + break; + case 3: + _l_field4 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 3; + break; + case 4: + _l_field5 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 4; + break; + case 5: + _l_field6 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 5; + break; + case 6: + _l_field7 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 6; + break; + case 7: + _l_field8 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 7; + break; + case 8: + _l_field9 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 8; + break; + case 9: + _l_field10 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 9; + break; + case 10: + _l_field11 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 10; + break; + case 11: + _l_field12 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 11; + break; + case 12: + _l_field13 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 12; + break; + case 13: + _l_field14 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 13; + break; + case 14: + _l_field15 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 14; + break; + case 15: + _l_field16 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 15; + break; + case 16: + _l_field17 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 16; + break; + case 17: + _l_field18 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 17; + break; + case 18: + _l_field19 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 18; + break; + case 19: + _l_field20 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 19; + break; + case 20: + _l_field21 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 20; + break; + case 21: + _l_field22 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 21; + break; + case 22: + _l_field23 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 22; + break; + case 23: + _l_field24 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 23; + break; + case 24: + _l_field25 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 24; + break; + case 25: + _l_field26 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 25; + break; + case 26: + _l_field27 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 26; + break; + case 27: + _l_field28 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 27; + break; + case 28: + _l_field29 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 28; + break; + case 29: + _l_field30 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 29; + break; + case 30: + _l_field31 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 30; + break; + case 31: + _l_field32 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 31; + break; + case 32: + _l_field33 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 32; + break; + case 33: + _l_field34 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 33; + break; + case 34: + _l_field35 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 34; + break; + case 35: + _l_field36 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 35; + break; + case 36: + _l_field37 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 36; + break; + case 37: + _l_field38 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 37; + break; + case 38: + _l_field39 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 38; + break; + case 39: + _l_field40 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 39; + break; + case 40: + _l_field41 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 40; + break; + case 41: + _l_field42 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 41; + break; + case 42: + _l_field43 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 42; + break; + case 43: + _l_field44 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 43; + break; + case 44: + _l_field45 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 44; + break; + case 45: + _l_field46 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 45; + break; + case 46: + _l_field47 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 46; + break; + case 47: + _l_field48 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 47; + break; + case 48: + _l_field49 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 48; + break; + case 49: + _l_field50 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 49; + break; + case 50: + _l_field51 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 50; + break; + case 51: + _l_field52 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 51; + break; + case 52: + _l_field53 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 52; + break; + case 53: + _l_field54 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 53; + break; + case 54: + _l_field55 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 54; + break; + case 55: + _l_field56 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 55; + break; + case 56: + _l_field57 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 56; + break; + case 57: + _l_field58 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 57; + break; + case 58: + _l_field59 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 58; + break; + case 59: + _l_field60 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 59; + break; + case 60: + _l_field61 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 60; + break; + case 61: + _l_field62 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 61; + break; + case 62: + _l_field63 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 62; + break; + case 63: + _l_field64 = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ulong)1) << 63; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.MaxSizeType Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111111111111111111111111111111111111111111111111111111111111111) { - byte _l_field1 = default !; - byte _l_field2 = default !; - byte _l_field3 = default !; - byte _l_field4 = default !; - byte _l_field5 = default !; - byte _l_field6 = default !; - byte _l_field7 = default !; - byte _l_field8 = default !; - byte _l_field9 = default !; - byte _l_field10 = default !; - byte _l_field11 = default !; - byte _l_field12 = default !; - byte _l_field13 = default !; - byte _l_field14 = default !; - byte _l_field15 = default !; - byte _l_field16 = default !; - byte _l_field17 = default !; - byte _l_field18 = default !; - byte _l_field19 = default !; - byte _l_field20 = default !; - byte _l_field21 = default !; - byte _l_field22 = default !; - byte _l_field23 = default !; - byte _l_field24 = default !; - byte _l_field25 = default !; - byte _l_field26 = default !; - byte _l_field27 = default !; - byte _l_field28 = default !; - byte _l_field29 = default !; - byte _l_field30 = default !; - byte _l_field31 = default !; - byte _l_field32 = default !; - byte _l_field33 = default !; - byte _l_field34 = default !; - byte _l_field35 = default !; - byte _l_field36 = default !; - byte _l_field37 = default !; - byte _l_field38 = default !; - byte _l_field39 = default !; - byte _l_field40 = default !; - byte _l_field41 = default !; - byte _l_field42 = default !; - byte _l_field43 = default !; - byte _l_field44 = default !; - byte _l_field45 = default !; - byte _l_field46 = default !; - byte _l_field47 = default !; - byte _l_field48 = default !; - byte _l_field49 = default !; - byte _l_field50 = default !; - byte _l_field51 = default !; - byte _l_field52 = default !; - byte _l_field53 = default !; - byte _l_field54 = default !; - byte _l_field55 = default !; - byte _l_field56 = default !; - byte _l_field57 = default !; - byte _l_field58 = default !; - byte _l_field59 = default !; - byte _l_field60 = default !; - byte _l_field61 = default !; - byte _l_field62 = default !; - byte _l_field63 = default !; - byte _l_field64 = default !; - ulong _r_assignedValid = 0b0; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_field1 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 0; - break; - case 2: - _l_field2 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 1; - break; - case 3: - _l_field3 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 2; - break; - case 4: - _l_field4 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 3; - break; - case 5: - _l_field5 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 4; - break; - case 6: - _l_field6 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 5; - break; - case 7: - _l_field7 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 6; - break; - case 8: - _l_field8 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 7; - break; - case 9: - _l_field9 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 8; - break; - case 10: - _l_field10 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 9; - break; - case 11: - _l_field11 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 10; - break; - case 12: - _l_field12 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 11; - break; - case 13: - _l_field13 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 12; - break; - case 14: - _l_field14 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 13; - break; - case 15: - _l_field15 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 14; - break; - case 16: - _l_field16 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 15; - break; - case 17: - _l_field17 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 16; - break; - case 18: - _l_field18 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 17; - break; - case 19: - _l_field19 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 18; - break; - case 20: - _l_field20 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 19; - break; - case 21: - _l_field21 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 20; - break; - case 22: - _l_field22 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 21; - break; - case 23: - _l_field23 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 22; - break; - case 24: - _l_field24 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 23; - break; - case 25: - _l_field25 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 24; - break; - case 26: - _l_field26 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 25; - break; - case 27: - _l_field27 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 26; - break; - case 28: - _l_field28 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 27; - break; - case 29: - _l_field29 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 28; - break; - case 30: - _l_field30 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 29; - break; - case 31: - _l_field31 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 30; - break; - case 32: - _l_field32 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 31; - break; - case 33: - _l_field33 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 32; - break; - case 34: - _l_field34 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 33; - break; - case 35: - _l_field35 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 34; - break; - case 36: - _l_field36 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 35; - break; - case 37: - _l_field37 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 36; - break; - case 38: - _l_field38 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 37; - break; - case 39: - _l_field39 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 38; - break; - case 40: - _l_field40 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 39; - break; - case 41: - _l_field41 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 40; - break; - case 42: - _l_field42 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 41; - break; - case 43: - _l_field43 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 42; - break; - case 44: - _l_field44 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 43; - break; - case 45: - _l_field45 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 44; - break; - case 46: - _l_field46 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 45; - break; - case 47: - _l_field47 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 46; - break; - case 48: - _l_field48 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 47; - break; - case 49: - _l_field49 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 48; - break; - case 50: - _l_field50 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 49; - break; - case 51: - _l_field51 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 50; - break; - case 52: - _l_field52 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 51; - break; - case 53: - _l_field53 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 52; - break; - case 54: - _l_field54 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 53; - break; - case 55: - _l_field55 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 54; - break; - case 56: - _l_field56 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 55; - break; - case 57: - _l_field57 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 56; - break; - case 58: - _l_field58 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 57; - break; - case 59: - _l_field59 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 58; - break; - case 60: - _l_field60 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 59; - break; - case 61: - _l_field61 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 60; - break; - case 62: - _l_field62 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 61; - break; - case 63: - _l_field63 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 62; - break; - case 64: - _l_field64 = d.GetNextValue(); - _r_assignedValid |= ((ulong)1) << 63; - break; - } - } - - if (_r_assignedValid != 0b1111111111111111111111111111111111111111111111111111111111111111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.MaxSizeType() - { - Field1 = _l_field1, - Field2 = _l_field2, - Field3 = _l_field3, - Field4 = _l_field4, - Field5 = _l_field5, - Field6 = _l_field6, - Field7 = _l_field7, - Field8 = _l_field8, - Field9 = _l_field9, - Field10 = _l_field10, - Field11 = _l_field11, - Field12 = _l_field12, - Field13 = _l_field13, - Field14 = _l_field14, - Field15 = _l_field15, - Field16 = _l_field16, - Field17 = _l_field17, - Field18 = _l_field18, - Field19 = _l_field19, - Field20 = _l_field20, - Field21 = _l_field21, - Field22 = _l_field22, - Field23 = _l_field23, - Field24 = _l_field24, - Field25 = _l_field25, - Field26 = _l_field26, - Field27 = _l_field27, - Field28 = _l_field28, - Field29 = _l_field29, - Field30 = _l_field30, - Field31 = _l_field31, - Field32 = _l_field32, - Field33 = _l_field33, - Field34 = _l_field34, - Field35 = _l_field35, - Field36 = _l_field36, - Field37 = _l_field37, - Field38 = _l_field38, - Field39 = _l_field39, - Field40 = _l_field40, - Field41 = _l_field41, - Field42 = _l_field42, - Field43 = _l_field43, - Field44 = _l_field44, - Field45 = _l_field45, - Field46 = _l_field46, - Field47 = _l_field47, - Field48 = _l_field48, - Field49 = _l_field49, - Field50 = _l_field50, - Field51 = _l_field51, - Field52 = _l_field52, - Field53 = _l_field53, - Field54 = _l_field54, - Field55 = _l_field55, - Field56 = _l_field56, - Field57 = _l_field57, - Field58 = _l_field58, - Field59 = _l_field59, - Field60 = _l_field60, - Field61 = _l_field61, - Field62 = _l_field62, - Field63 = _l_field63, - Field64 = _l_field64, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.MaxSizeType() + { + Field1 = _l_field1, + Field2 = _l_field2, + Field3 = _l_field3, + Field4 = _l_field4, + Field5 = _l_field5, + Field6 = _l_field6, + Field7 = _l_field7, + Field8 = _l_field8, + Field9 = _l_field9, + Field10 = _l_field10, + Field11 = _l_field11, + Field12 = _l_field12, + Field13 = _l_field13, + Field14 = _l_field14, + Field15 = _l_field15, + Field16 = _l_field16, + Field17 = _l_field17, + Field18 = _l_field18, + Field19 = _l_field19, + Field20 = _l_field20, + Field21 = _l_field21, + Field22 = _l_field22, + Field23 = _l_field23, + Field24 = _l_field24, + Field25 = _l_field25, + Field26 = _l_field26, + Field27 = _l_field27, + Field28 = _l_field28, + Field29 = _l_field29, + Field30 = _l_field30, + Field31 = _l_field31, + Field32 = _l_field32, + Field33 = _l_field33, + Field34 = _l_field34, + Field35 = _l_field35, + Field36 = _l_field36, + Field37 = _l_field37, + Field38 = _l_field38, + Field39 = _l_field39, + Field40 = _l_field40, + Field41 = _l_field41, + Field42 = _l_field42, + Field43 = _l_field43, + Field44 = _l_field44, + Field45 = _l_field45, + Field46 = _l_field46, + Field47 = _l_field47, + Field48 = _l_field48, + Field49 = _l_field49, + Field50 = _l_field50, + Field51 = _l_field51, + Field52 = _l_field52, + Field53 = _l_field53, + Field54 = _l_field54, + Field55 = _l_field55, + Field56 = _l_field56, + Field57 = _l_field57, + Field58 = _l_field58, + Field59 = _l_field59, + Field60 = _l_field60, + Field61 = _l_field61, + Field62 = _l_field62, + Field63 = _l_field63, + Field64 = _l_field64, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeTypeSerdeTypeInfo.cs b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeTypeSerdeTypeInfo.cs index 7874bdd7..8d36c86b 100644 --- a/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeTypeSerdeTypeInfo.cs +++ b/test/Serde.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.MaxSizeTypeSerdeTypeInfo.cs @@ -2,69 +2,69 @@ internal static class MaxSizeTypeSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("field1", typeof(MaxSizeType).GetProperty("Field1")!), -("field2", typeof(MaxSizeType).GetProperty("Field2")!), -("field3", typeof(MaxSizeType).GetProperty("Field3")!), -("field4", typeof(MaxSizeType).GetProperty("Field4")!), -("field5", typeof(MaxSizeType).GetProperty("Field5")!), -("field6", typeof(MaxSizeType).GetProperty("Field6")!), -("field7", typeof(MaxSizeType).GetProperty("Field7")!), -("field8", typeof(MaxSizeType).GetProperty("Field8")!), -("field9", typeof(MaxSizeType).GetProperty("Field9")!), -("field10", typeof(MaxSizeType).GetProperty("Field10")!), -("field11", typeof(MaxSizeType).GetProperty("Field11")!), -("field12", typeof(MaxSizeType).GetProperty("Field12")!), -("field13", typeof(MaxSizeType).GetProperty("Field13")!), -("field14", typeof(MaxSizeType).GetProperty("Field14")!), -("field15", typeof(MaxSizeType).GetProperty("Field15")!), -("field16", typeof(MaxSizeType).GetProperty("Field16")!), -("field17", typeof(MaxSizeType).GetProperty("Field17")!), -("field18", typeof(MaxSizeType).GetProperty("Field18")!), -("field19", typeof(MaxSizeType).GetProperty("Field19")!), -("field20", typeof(MaxSizeType).GetProperty("Field20")!), -("field21", typeof(MaxSizeType).GetProperty("Field21")!), -("field22", typeof(MaxSizeType).GetProperty("Field22")!), -("field23", typeof(MaxSizeType).GetProperty("Field23")!), -("field24", typeof(MaxSizeType).GetProperty("Field24")!), -("field25", typeof(MaxSizeType).GetProperty("Field25")!), -("field26", typeof(MaxSizeType).GetProperty("Field26")!), -("field27", typeof(MaxSizeType).GetProperty("Field27")!), -("field28", typeof(MaxSizeType).GetProperty("Field28")!), -("field29", typeof(MaxSizeType).GetProperty("Field29")!), -("field30", typeof(MaxSizeType).GetProperty("Field30")!), -("field31", typeof(MaxSizeType).GetProperty("Field31")!), -("field32", typeof(MaxSizeType).GetProperty("Field32")!), -("field33", typeof(MaxSizeType).GetProperty("Field33")!), -("field34", typeof(MaxSizeType).GetProperty("Field34")!), -("field35", typeof(MaxSizeType).GetProperty("Field35")!), -("field36", typeof(MaxSizeType).GetProperty("Field36")!), -("field37", typeof(MaxSizeType).GetProperty("Field37")!), -("field38", typeof(MaxSizeType).GetProperty("Field38")!), -("field39", typeof(MaxSizeType).GetProperty("Field39")!), -("field40", typeof(MaxSizeType).GetProperty("Field40")!), -("field41", typeof(MaxSizeType).GetProperty("Field41")!), -("field42", typeof(MaxSizeType).GetProperty("Field42")!), -("field43", typeof(MaxSizeType).GetProperty("Field43")!), -("field44", typeof(MaxSizeType).GetProperty("Field44")!), -("field45", typeof(MaxSizeType).GetProperty("Field45")!), -("field46", typeof(MaxSizeType).GetProperty("Field46")!), -("field47", typeof(MaxSizeType).GetProperty("Field47")!), -("field48", typeof(MaxSizeType).GetProperty("Field48")!), -("field49", typeof(MaxSizeType).GetProperty("Field49")!), -("field50", typeof(MaxSizeType).GetProperty("Field50")!), -("field51", typeof(MaxSizeType).GetProperty("Field51")!), -("field52", typeof(MaxSizeType).GetProperty("Field52")!), -("field53", typeof(MaxSizeType).GetProperty("Field53")!), -("field54", typeof(MaxSizeType).GetProperty("Field54")!), -("field55", typeof(MaxSizeType).GetProperty("Field55")!), -("field56", typeof(MaxSizeType).GetProperty("Field56")!), -("field57", typeof(MaxSizeType).GetProperty("Field57")!), -("field58", typeof(MaxSizeType).GetProperty("Field58")!), -("field59", typeof(MaxSizeType).GetProperty("Field59")!), -("field60", typeof(MaxSizeType).GetProperty("Field60")!), -("field61", typeof(MaxSizeType).GetProperty("Field61")!), -("field62", typeof(MaxSizeType).GetProperty("Field62")!), -("field63", typeof(MaxSizeType).GetProperty("Field63")!), -("field64", typeof(MaxSizeType).GetProperty("Field64")!) +("field1", typeof(Serde.Test.MaxSizeType).GetProperty("Field1")!), +("field2", typeof(Serde.Test.MaxSizeType).GetProperty("Field2")!), +("field3", typeof(Serde.Test.MaxSizeType).GetProperty("Field3")!), +("field4", typeof(Serde.Test.MaxSizeType).GetProperty("Field4")!), +("field5", typeof(Serde.Test.MaxSizeType).GetProperty("Field5")!), +("field6", typeof(Serde.Test.MaxSizeType).GetProperty("Field6")!), +("field7", typeof(Serde.Test.MaxSizeType).GetProperty("Field7")!), +("field8", typeof(Serde.Test.MaxSizeType).GetProperty("Field8")!), +("field9", typeof(Serde.Test.MaxSizeType).GetProperty("Field9")!), +("field10", typeof(Serde.Test.MaxSizeType).GetProperty("Field10")!), +("field11", typeof(Serde.Test.MaxSizeType).GetProperty("Field11")!), +("field12", typeof(Serde.Test.MaxSizeType).GetProperty("Field12")!), +("field13", typeof(Serde.Test.MaxSizeType).GetProperty("Field13")!), +("field14", typeof(Serde.Test.MaxSizeType).GetProperty("Field14")!), +("field15", typeof(Serde.Test.MaxSizeType).GetProperty("Field15")!), +("field16", typeof(Serde.Test.MaxSizeType).GetProperty("Field16")!), +("field17", typeof(Serde.Test.MaxSizeType).GetProperty("Field17")!), +("field18", typeof(Serde.Test.MaxSizeType).GetProperty("Field18")!), +("field19", typeof(Serde.Test.MaxSizeType).GetProperty("Field19")!), +("field20", typeof(Serde.Test.MaxSizeType).GetProperty("Field20")!), +("field21", typeof(Serde.Test.MaxSizeType).GetProperty("Field21")!), +("field22", typeof(Serde.Test.MaxSizeType).GetProperty("Field22")!), +("field23", typeof(Serde.Test.MaxSizeType).GetProperty("Field23")!), +("field24", typeof(Serde.Test.MaxSizeType).GetProperty("Field24")!), +("field25", typeof(Serde.Test.MaxSizeType).GetProperty("Field25")!), +("field26", typeof(Serde.Test.MaxSizeType).GetProperty("Field26")!), +("field27", typeof(Serde.Test.MaxSizeType).GetProperty("Field27")!), +("field28", typeof(Serde.Test.MaxSizeType).GetProperty("Field28")!), +("field29", typeof(Serde.Test.MaxSizeType).GetProperty("Field29")!), +("field30", typeof(Serde.Test.MaxSizeType).GetProperty("Field30")!), +("field31", typeof(Serde.Test.MaxSizeType).GetProperty("Field31")!), +("field32", typeof(Serde.Test.MaxSizeType).GetProperty("Field32")!), +("field33", typeof(Serde.Test.MaxSizeType).GetProperty("Field33")!), +("field34", typeof(Serde.Test.MaxSizeType).GetProperty("Field34")!), +("field35", typeof(Serde.Test.MaxSizeType).GetProperty("Field35")!), +("field36", typeof(Serde.Test.MaxSizeType).GetProperty("Field36")!), +("field37", typeof(Serde.Test.MaxSizeType).GetProperty("Field37")!), +("field38", typeof(Serde.Test.MaxSizeType).GetProperty("Field38")!), +("field39", typeof(Serde.Test.MaxSizeType).GetProperty("Field39")!), +("field40", typeof(Serde.Test.MaxSizeType).GetProperty("Field40")!), +("field41", typeof(Serde.Test.MaxSizeType).GetProperty("Field41")!), +("field42", typeof(Serde.Test.MaxSizeType).GetProperty("Field42")!), +("field43", typeof(Serde.Test.MaxSizeType).GetProperty("Field43")!), +("field44", typeof(Serde.Test.MaxSizeType).GetProperty("Field44")!), +("field45", typeof(Serde.Test.MaxSizeType).GetProperty("Field45")!), +("field46", typeof(Serde.Test.MaxSizeType).GetProperty("Field46")!), +("field47", typeof(Serde.Test.MaxSizeType).GetProperty("Field47")!), +("field48", typeof(Serde.Test.MaxSizeType).GetProperty("Field48")!), +("field49", typeof(Serde.Test.MaxSizeType).GetProperty("Field49")!), +("field50", typeof(Serde.Test.MaxSizeType).GetProperty("Field50")!), +("field51", typeof(Serde.Test.MaxSizeType).GetProperty("Field51")!), +("field52", typeof(Serde.Test.MaxSizeType).GetProperty("Field52")!), +("field53", typeof(Serde.Test.MaxSizeType).GetProperty("Field53")!), +("field54", typeof(Serde.Test.MaxSizeType).GetProperty("Field54")!), +("field55", typeof(Serde.Test.MaxSizeType).GetProperty("Field55")!), +("field56", typeof(Serde.Test.MaxSizeType).GetProperty("Field56")!), +("field57", typeof(Serde.Test.MaxSizeType).GetProperty("Field57")!), +("field58", typeof(Serde.Test.MaxSizeType).GetProperty("Field58")!), +("field59", typeof(Serde.Test.MaxSizeType).GetProperty("Field59")!), +("field60", typeof(Serde.Test.MaxSizeType).GetProperty("Field60")!), +("field61", typeof(Serde.Test.MaxSizeType).GetProperty("Field61")!), +("field62", typeof(Serde.Test.MaxSizeType).GetProperty("Field62")!), +("field63", typeof(Serde.Test.MaxSizeType).GetProperty("Field63")!), +("field64", typeof(Serde.Test.MaxSizeType).GetProperty("Field64")!) }); } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs index ad221625..21e67b52 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.ColorEnumSerdeTypeInfo.cs @@ -4,9 +4,9 @@ partial record AllInOne internal static class ColorEnumSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("red", typeof(ColorEnum).GetField("Red")!), -("blue", typeof(ColorEnum).GetField("Blue")!), -("green", typeof(ColorEnum).GetField("Green")!) +("red", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Red")!), +("blue", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Blue")!), +("green", typeof(Serde.Test.AllInOne.ColorEnum).GetField("Green")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs index 32c47097..12d3b02c 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOne.IDeserialize.cs @@ -9,198 +9,126 @@ partial record AllInOne : Serde.IDeserialize { static Serde.Test.AllInOne Serde.IDeserialize.Deserialize(IDeserializer deserializer) { - var visitor = new SerdeVisitor(); - var fieldNames = new[] + bool _l_boolfield = default !; + char _l_charfield = default !; + byte _l_bytefield = default !; + ushort _l_ushortfield = default !; + uint _l_uintfield = default !; + ulong _l_ulongfield = default !; + sbyte _l_sbytefield = default !; + short _l_shortfield = default !; + int _l_intfield = default !; + long _l_longfield = default !; + string _l_stringfield = default !; + string? _l_nullstringfield = default !; + uint[] _l_uintarr = default !; + int[][] _l_nestedarr = default !; + System.Collections.Immutable.ImmutableArray _l_intimm = default !; + Serde.Test.AllInOne.ColorEnum _l_color = default !; + ushort _r_assignedValid = 0b100000000000; + var _l_typeInfo = AllInOneSerdeTypeInfo.TypeInfo; + var typeDeserialize = deserializer.DeserializeType(_l_typeInfo); + int _l_index_; + while ((_l_index_ = typeDeserialize.TryReadIndex(_l_typeInfo, out var _l_errorName)) != IDeserializeType.EndOfType) { - "BoolField", - "CharField", - "ByteField", - "UShortField", - "UIntField", - "ULongField", - "SByteField", - "ShortField", - "IntField", - "LongField", - "StringField", - "NullStringField", - "UIntArr", - "NestedArr", - "IntImm", - "Color" - }; - return deserializer.DeserializeType("AllInOne", fieldNames, visitor); - } - - private sealed class SerdeVisitor : Serde.IDeserializeVisitor - { - public string ExpectedTypeName => "Serde.Test.AllInOne"; - - private sealed class FieldNameVisitor : Serde.IDeserialize, Serde.IDeserializeVisitor - { - public static readonly FieldNameVisitor Instance = new FieldNameVisitor(); - public static byte Deserialize(IDeserializer deserializer) => deserializer.DeserializeString(Instance); - public string ExpectedTypeName => "string"; - - byte Serde.IDeserializeVisitor.VisitString(string s) => VisitUtf8Span(System.Text.Encoding.UTF8.GetBytes(s)); - public byte VisitUtf8Span(System.ReadOnlySpan s) + switch (_l_index_) { - switch (s[0]) - { - case (byte)'b' when s.SequenceEqual("boolField"u8): - return 1; - case (byte)'c' when s.SequenceEqual("charField"u8): - return 2; - case (byte)'b' when s.SequenceEqual("byteField"u8): - return 3; - case (byte)'u' when s.SequenceEqual("uShortField"u8): - return 4; - case (byte)'u' when s.SequenceEqual("uIntField"u8): - return 5; - case (byte)'u' when s.SequenceEqual("uLongField"u8): - return 6; - case (byte)'s' when s.SequenceEqual("sByteField"u8): - return 7; - case (byte)'s' when s.SequenceEqual("shortField"u8): - return 8; - case (byte)'i' when s.SequenceEqual("intField"u8): - return 9; - case (byte)'l' when s.SequenceEqual("longField"u8): - return 10; - case (byte)'s' when s.SequenceEqual("stringField"u8): - return 11; - case (byte)'n' when s.SequenceEqual("nullStringField"u8): - return 12; - case (byte)'u' when s.SequenceEqual("uIntArr"u8): - return 13; - case (byte)'n' when s.SequenceEqual("nestedArr"u8): - return 14; - case (byte)'i' when s.SequenceEqual("intImm"u8): - return 15; - case (byte)'c' when s.SequenceEqual("color"u8): - return 16; - default: - return 0; - } + case 0: + _l_boolfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 0; + break; + case 1: + _l_charfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 1; + break; + case 2: + _l_bytefield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 2; + break; + case 3: + _l_ushortfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 3; + break; + case 4: + _l_uintfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 4; + break; + case 5: + _l_ulongfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 5; + break; + case 6: + _l_sbytefield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 6; + break; + case 7: + _l_shortfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 7; + break; + case 8: + _l_intfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 8; + break; + case 9: + _l_longfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 9; + break; + case 10: + _l_stringfield = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 10; + break; + case 11: + _l_nullstringfield = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((ushort)1) << 11; + break; + case 12: + _l_uintarr = typeDeserialize.ReadValue>(_l_index_); + _r_assignedValid |= ((ushort)1) << 12; + break; + case 13: + _l_nestedarr = typeDeserialize.ReadValue>>(_l_index_); + _r_assignedValid |= ((ushort)1) << 13; + break; + case 14: + _l_intimm = typeDeserialize.ReadValue, ImmutableArrayWrap.DeserializeImpl>(_l_index_); + _r_assignedValid |= ((ushort)1) << 14; + break; + case 15: + _l_color = typeDeserialize.ReadValue(_l_index_); + _r_assignedValid |= ((ushort)1) << 15; + break; + case Serde.IDeserializeType.IndexNotFound: + break; + default: + throw new InvalidOperationException("Unexpected index: " + _l_index_); } } - Serde.Test.AllInOne Serde.IDeserializeVisitor.VisitDictionary(ref D d) + if (_r_assignedValid != 0b1111111111111111) { - bool _l_boolfield = default !; - char _l_charfield = default !; - byte _l_bytefield = default !; - ushort _l_ushortfield = default !; - uint _l_uintfield = default !; - ulong _l_ulongfield = default !; - sbyte _l_sbytefield = default !; - short _l_shortfield = default !; - int _l_intfield = default !; - long _l_longfield = default !; - string _l_stringfield = default !; - string? _l_nullstringfield = default !; - uint[] _l_uintarr = default !; - int[][] _l_nestedarr = default !; - System.Collections.Immutable.ImmutableArray _l_intimm = default !; - Serde.Test.AllInOne.ColorEnum _l_color = default !; - ushort _r_assignedValid = 0b100000000000; - while (d.TryGetNextKey(out byte key)) - { - switch (key) - { - case 1: - _l_boolfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 0; - break; - case 2: - _l_charfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 1; - break; - case 3: - _l_bytefield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 2; - break; - case 4: - _l_ushortfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 3; - break; - case 5: - _l_uintfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 4; - break; - case 6: - _l_ulongfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 5; - break; - case 7: - _l_sbytefield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 6; - break; - case 8: - _l_shortfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 7; - break; - case 9: - _l_intfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 8; - break; - case 10: - _l_longfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 9; - break; - case 11: - _l_stringfield = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 10; - break; - case 12: - _l_nullstringfield = d.GetNextValue>(); - _r_assignedValid |= ((ushort)1) << 11; - break; - case 13: - _l_uintarr = d.GetNextValue>(); - _r_assignedValid |= ((ushort)1) << 12; - break; - case 14: - _l_nestedarr = d.GetNextValue>>(); - _r_assignedValid |= ((ushort)1) << 13; - break; - case 15: - _l_intimm = d.GetNextValue, ImmutableArrayWrap.DeserializeImpl>(); - _r_assignedValid |= ((ushort)1) << 14; - break; - case 16: - _l_color = d.GetNextValue(); - _r_assignedValid |= ((ushort)1) << 15; - break; - } - } - - if (_r_assignedValid != 0b1111111111111111) - { - throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); - } - - var newType = new Serde.Test.AllInOne() - { - BoolField = _l_boolfield, - CharField = _l_charfield, - ByteField = _l_bytefield, - UShortField = _l_ushortfield, - UIntField = _l_uintfield, - ULongField = _l_ulongfield, - SByteField = _l_sbytefield, - ShortField = _l_shortfield, - IntField = _l_intfield, - LongField = _l_longfield, - StringField = _l_stringfield, - NullStringField = _l_nullstringfield, - UIntArr = _l_uintarr, - NestedArr = _l_nestedarr, - IntImm = _l_intimm, - Color = _l_color, - }; - return newType; + throw new Serde.InvalidDeserializeValueException("Not all members were assigned"); } + + var newType = new Serde.Test.AllInOne() + { + BoolField = _l_boolfield, + CharField = _l_charfield, + ByteField = _l_bytefield, + UShortField = _l_ushortfield, + UIntField = _l_uintfield, + ULongField = _l_ulongfield, + SByteField = _l_sbytefield, + ShortField = _l_shortfield, + IntField = _l_intfield, + LongField = _l_longfield, + StringField = _l_stringfield, + NullStringField = _l_nullstringfield, + UIntArr = _l_uintarr, + NestedArr = _l_nestedarr, + IntImm = _l_intimm, + Color = _l_color, + }; + return newType; } } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs index 50912c51..79728a45 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.AllInOneSerdeTypeInfo.cs @@ -2,21 +2,21 @@ internal static class AllInOneSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("boolField", typeof(AllInOne).GetField("BoolField")!), -("charField", typeof(AllInOne).GetField("CharField")!), -("byteField", typeof(AllInOne).GetField("ByteField")!), -("uShortField", typeof(AllInOne).GetField("UShortField")!), -("uIntField", typeof(AllInOne).GetField("UIntField")!), -("uLongField", typeof(AllInOne).GetField("ULongField")!), -("sByteField", typeof(AllInOne).GetField("SByteField")!), -("shortField", typeof(AllInOne).GetField("ShortField")!), -("intField", typeof(AllInOne).GetField("IntField")!), -("longField", typeof(AllInOne).GetField("LongField")!), -("stringField", typeof(AllInOne).GetField("StringField")!), -("nullStringField", typeof(AllInOne).GetField("NullStringField")!), -("uIntArr", typeof(AllInOne).GetField("UIntArr")!), -("nestedArr", typeof(AllInOne).GetField("NestedArr")!), -("intImm", typeof(AllInOne).GetField("IntImm")!), -("color", typeof(AllInOne).GetField("Color")!) +("boolField", typeof(Serde.Test.AllInOne).GetField("BoolField")!), +("charField", typeof(Serde.Test.AllInOne).GetField("CharField")!), +("byteField", typeof(Serde.Test.AllInOne).GetField("ByteField")!), +("uShortField", typeof(Serde.Test.AllInOne).GetField("UShortField")!), +("uIntField", typeof(Serde.Test.AllInOne).GetField("UIntField")!), +("uLongField", typeof(Serde.Test.AllInOne).GetField("ULongField")!), +("sByteField", typeof(Serde.Test.AllInOne).GetField("SByteField")!), +("shortField", typeof(Serde.Test.AllInOne).GetField("ShortField")!), +("intField", typeof(Serde.Test.AllInOne).GetField("IntField")!), +("longField", typeof(Serde.Test.AllInOne).GetField("LongField")!), +("stringField", typeof(Serde.Test.AllInOne).GetField("StringField")!), +("nullStringField", typeof(Serde.Test.AllInOne).GetField("NullStringField")!), +("uIntArr", typeof(Serde.Test.AllInOne).GetField("UIntArr")!), +("nestedArr", typeof(Serde.Test.AllInOne).GetField("NestedArr")!), +("intImm", typeof(Serde.Test.AllInOne).GetField("IntImm")!), +("color", typeof(Serde.Test.AllInOne).GetField("Color")!) }); } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.AddressSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.AddressSerdeTypeInfo.cs index 67610d76..42b360f4 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.AddressSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.AddressSerdeTypeInfo.cs @@ -4,11 +4,11 @@ partial class SampleTest internal static class AddressSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("Name", typeof(Address).GetField("Name")!), -("Line1", typeof(Address).GetField("Line1")!), -("City", typeof(Address).GetField("City")!), -("State", typeof(Address).GetField("State")!), -("Zip", typeof(Address).GetField("Zip")!) +("Name", typeof(Serde.Test.SampleTest.Address).GetField("Name")!), +("Line1", typeof(Serde.Test.SampleTest.Address).GetField("Line1")!), +("City", typeof(Serde.Test.SampleTest.Address).GetField("City")!), +("State", typeof(Serde.Test.SampleTest.Address).GetField("State")!), +("Zip", typeof(Serde.Test.SampleTest.Address).GetField("Zip")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.OrderedItemSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.OrderedItemSerdeTypeInfo.cs index 85a36d0c..8e22a74f 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.OrderedItemSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.OrderedItemSerdeTypeInfo.cs @@ -4,11 +4,11 @@ partial class SampleTest internal static class OrderedItemSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("ItemName", typeof(OrderedItem).GetField("ItemName")!), -("Description", typeof(OrderedItem).GetField("Description")!), -("UnitPrice", typeof(OrderedItem).GetField("UnitPrice")!), -("Quantity", typeof(OrderedItem).GetField("Quantity")!), -("LineTotal", typeof(OrderedItem).GetField("LineTotal")!) +("ItemName", typeof(Serde.Test.SampleTest.OrderedItem).GetField("ItemName")!), +("Description", typeof(Serde.Test.SampleTest.OrderedItem).GetField("Description")!), +("UnitPrice", typeof(Serde.Test.SampleTest.OrderedItem).GetField("UnitPrice")!), +("Quantity", typeof(Serde.Test.SampleTest.OrderedItem).GetField("Quantity")!), +("LineTotal", typeof(Serde.Test.SampleTest.OrderedItem).GetField("LineTotal")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.PurchaseOrderSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.PurchaseOrderSerdeTypeInfo.cs index 069580f6..9d6a453e 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.PurchaseOrderSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.SampleTest.PurchaseOrderSerdeTypeInfo.cs @@ -4,12 +4,12 @@ partial class SampleTest internal static class PurchaseOrderSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("ShipTo", typeof(PurchaseOrder).GetField("ShipTo")!), -("OrderDate", typeof(PurchaseOrder).GetField("OrderDate")!), -("Items", typeof(PurchaseOrder).GetField("OrderedItems")!), -("SubTotal", typeof(PurchaseOrder).GetField("SubTotal")!), -("ShipCost", typeof(PurchaseOrder).GetField("ShipCost")!), -("TotalCost", typeof(PurchaseOrder).GetField("TotalCost")!) +("ShipTo", typeof(Serde.Test.SampleTest.PurchaseOrder).GetField("ShipTo")!), +("OrderDate", typeof(Serde.Test.SampleTest.PurchaseOrder).GetField("OrderDate")!), +("Items", typeof(Serde.Test.SampleTest.PurchaseOrder).GetField("OrderedItems")!), +("SubTotal", typeof(Serde.Test.SampleTest.PurchaseOrder).GetField("SubTotal")!), +("ShipCost", typeof(Serde.Test.SampleTest.PurchaseOrder).GetField("ShipCost")!), +("TotalCost", typeof(Serde.Test.SampleTest.PurchaseOrder).GetField("TotalCost")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.BoolStructSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.BoolStructSerdeTypeInfo.cs index 4fab807b..aacc961b 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.BoolStructSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.BoolStructSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class XmlTests internal static class BoolStructSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("BoolField", typeof(BoolStruct).GetField("BoolField")!) +("BoolField", typeof(Serde.Test.XmlTests.BoolStruct).GetField("BoolField")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.MapTest1SerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.MapTest1SerdeTypeInfo.cs index 27de841e..0c1ae304 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.MapTest1SerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.MapTest1SerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class XmlTests internal static class MapTest1SerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("MapField", typeof(MapTest1).GetField("MapField")!) +("MapField", typeof(Serde.Test.XmlTests.MapTest1).GetField("MapField")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.NestedArraysSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.NestedArraysSerdeTypeInfo.cs index 64ca1796..eb0e70f0 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.NestedArraysSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.NestedArraysSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class XmlTests internal static class NestedArraysSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("A", typeof(NestedArrays).GetField("A")!) +("A", typeof(Serde.Test.XmlTests.NestedArrays).GetField("A")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.StructWithIntFieldSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.StructWithIntFieldSerdeTypeInfo.cs index 4f2f0d3b..e4fac483 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.StructWithIntFieldSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.StructWithIntFieldSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class XmlTests internal static class StructWithIntFieldSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("X", typeof(StructWithIntField).GetProperty("X")!) +("X", typeof(Serde.Test.XmlTests.StructWithIntField).GetProperty("X")!) }); } } \ No newline at end of file diff --git a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.TypeWithArrayFieldSerdeTypeInfo.cs b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.TypeWithArrayFieldSerdeTypeInfo.cs index e1d27ad4..ad67a4aa 100644 --- a/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.TypeWithArrayFieldSerdeTypeInfo.cs +++ b/test/Serde.Xml.Test/generated/SerdeGenerator/Serde.SerdeImplRoslynGenerator/Serde.Test.XmlTests.TypeWithArrayFieldSerdeTypeInfo.cs @@ -4,7 +4,7 @@ partial class XmlTests internal static class TypeWithArrayFieldSerdeTypeInfo { internal static readonly Serde.TypeInfo TypeInfo = Serde.TypeInfo.Create(new (string, System.Reflection.MemberInfo)[] { -("ArrayField", typeof(TypeWithArrayField).GetField("ArrayField")!) +("ArrayField", typeof(Serde.Test.XmlTests.TypeWithArrayField).GetField("ArrayField")!) }); } } \ No newline at end of file