Skip to content

Commit

Permalink
Fix to detect field initializer
Browse files Browse the repository at this point in the history
  • Loading branch information
hadashiA committed Mar 14, 2024
1 parent 8bc1b9a commit ee32ccb
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions src/MemoryPack.Generator/MemoryPackGenerator.Parser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -662,9 +662,24 @@ public MemberMeta(ISymbol symbol, IMethodSymbol? constructor, ReferenceSymbols r
#endif
;
MemberType = f.Type;
if (f.HasConstantValue)

// Detect default value
foreach (var syntaxReference in f.DeclaringSyntaxReferences)
{
DefaultValueExpression = EmitConstantValue(f.ConstantValue);
var syntax = syntaxReference.GetSyntax();
if (syntax is FieldDeclarationSyntax { Declaration.Variables: { Count: > 0 } variables })
{
if (variables.First().Initializer is { } initializer)
{
DefaultValueExpression = initializer.Value.ToString();
break;
}
}
if (syntax is VariableDeclaratorSyntax { Initializer: { } initializer2 })
{
DefaultValueExpression = initializer2.Value.ToString();
break;
}
}
}
else if (symbol is IPropertySymbol p)
Expand Down

0 comments on commit ee32ccb

Please sign in to comment.