private BoundStructType BindStructDeclaration(StructTypeSyntax declaration, Symbol parent)
{
ClassOrStructSymbol baseType;
List <InterfaceSymbol> baseInterfaces;
BindBaseList(declaration.BaseList, parent, out baseType, out baseInterfaces);
var structSymbol = new StructSymbol(declaration, parent, baseType, baseInterfaces.ToImmutableArray());
AddSymbol(structSymbol, declaration.Name?.SourceRange ?? declaration.SourceRange);
var variables = new List <BoundMultipleVariableDeclarations>();
var structBinder = new Binder(_sharedBinderState, this);
foreach (var variableDeclarationStatement in declaration.Fields)
{
variables.Add(structBinder.Bind(variableDeclarationStatement, x => structBinder.BindField(x, structSymbol)));
}
foreach (var member in structBinder.LocalSymbols.Values.SelectMany(x => x))
{
structSymbol.AddMember(member);
}
return(new BoundStructType(structSymbol, variables.ToImmutableArray()));
}