public BoundStructType(StructSymbol structSymbol, ImmutableArray<BoundMultipleVariableDeclarations> variables) : base(BoundNodeKind.StructType, structSymbol) { StructSymbol = structSymbol; Variables = variables; }
private void BindStructDeclaration(StructTypeSyntax declaration) { Func<TypeSymbol, IEnumerable<FieldSymbol>> lazyMemberSymbols = cd => { var memberSymbols = new List<FieldSymbol>(); foreach (var memberSyntax in declaration.Fields) memberSymbols.AddRange(BindFields(memberSyntax, cd)); return memberSymbols; }; var symbol = new StructSymbol(declaration, null, lazyMemberSymbols); _bindingResult.AddSymbol(declaration, symbol); _symbolSet.AddGlobal(symbol); }
private BoundStructType BindStructDeclaration(StructTypeSyntax declaration, Symbol parent) { var structSymbol = new StructSymbol(declaration, parent); AddSymbol(structSymbol, declaration.Name?.Span ?? declaration.GetTextSpanSafe()); 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()); }