Skip to content

Commit ee32ccb

Browse files
committed
Fix to detect field initializer
1 parent 8bc1b9a commit ee32ccb

1 file changed

Lines changed: 17 additions & 2 deletions

File tree

src/MemoryPack.Generator/MemoryPackGenerator.Parser.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -662,9 +662,24 @@ public MemberMeta(ISymbol symbol, IMethodSymbol? constructor, ReferenceSymbols r
662662
#endif
663663
;
664664
MemberType = f.Type;
665-
if (f.HasConstantValue)
665+
666+
// Detect default value
667+
foreach (var syntaxReference in f.DeclaringSyntaxReferences)
666668
{
667-
DefaultValueExpression = EmitConstantValue(f.ConstantValue);
669+
var syntax = syntaxReference.GetSyntax();
670+
if (syntax is FieldDeclarationSyntax { Declaration.Variables: { Count: > 0 } variables })
671+
{
672+
if (variables.First().Initializer is { } initializer)
673+
{
674+
DefaultValueExpression = initializer.Value.ToString();
675+
break;
676+
}
677+
}
678+
if (syntax is VariableDeclaratorSyntax { Initializer: { } initializer2 })
679+
{
680+
DefaultValueExpression = initializer2.Value.ToString();
681+
break;
682+
}
668683
}
669684
}
670685
else if (symbol is IPropertySymbol p)

0 commit comments

Comments
 (0)