private void AppendFieldInitializers(ClassDeclarationSyntax node)
{
foreach (var fields in node.ChildNodes().OfType<FieldDeclarationSyntax>()
.Where(f => f.RequiresInitialization(model)))
{
var vs = new List<Tuple<VariableDeclaratorSyntax, IFieldSymbol>>();
foreach (var v in fields.Declaration.Variables)
{
var z = (IFieldSymbol) model.GetDeclaredSymbol(v);
if (!z.IsStatic)
{
vs.Add(new Tuple<VariableDeclaratorSyntax, IFieldSymbol>(v,z));
}
}
for (int i = 0; i < vs.Count; ++i)
{
var v = vs[i].Item1;
var symbol = vs[i].Item2;
cb.AppendWithIndent(v.Identifier.ToString()).Append("(");
// if the field has an initer, use that instead
if (v.Initializer != null)
{
cb.Append(v.Initializer.Value.ToString());
}
else
{
cb.Append(symbol.Type.GetDefaultValue());
}
cb.Append(")");
if (i + 1 != vs.Count)
cb.Append(",");
cb.AppendLine();
}
}
}