internal ConstantFieldsInProgress( SourceFieldSymbol fieldOpt, HashSet <SourceFieldSymbolWithSyntaxReference> dependencies) { _fieldOpt = fieldOpt; _dependencies = dependencies; }
internal ConstantFieldsInProgress( SourceFieldSymbol fieldOpt, HashSet <SourceFieldSymbol> dependencies) { this.fieldOpt = fieldOpt; this.dependencies = dependencies; }
public BoundExpression BuildField(SourceFieldSymbol fieldSymbol) { _rootScope = new SymbolScope((ISymbolTable)fieldSymbol.Parent); _currentScope = _rootScope; BoundExpression initializerExpression = null; var fieldDeclarationNode = fieldSymbol.Syntax; Debug.Assert(fieldDeclarationNode != null); //var initializerNode = fieldDeclarationNode.Initializer; //if (initializerNode.Value != null) //{ // var expressionBuilder = new ExpressionBinder(this, fieldSymbol, _diagnostics); // initializerExpression = expressionBuilder.BindExpression(initializerNode.Value); // if (initializerExpression is BoundMemberExpression) // initializerExpression = expressionBuilder.TransformMemberExpression((MemberExpression) initializerExpression); //} throw new NotImplementedException(); // TODO: Cache result. return(initializerExpression); }
private IEnumerable <FieldSymbol> BindFields(VariableDeclarationStatementSyntax variableDeclarationStatementSyntax, TypeSymbol parentType) { var declaration = variableDeclarationStatementSyntax.Declaration; foreach (var declarator in declaration.Variables) { var variableType = _symbolSet.ResolveType(declaration.Type, null, null); foreach (var arrayRankSpecifier in declarator.ArrayRankSpecifiers) { variableType = new ArraySymbol(variableType); } var symbol = new SourceFieldSymbol(declarator, parentType, variableType); _bindingResult.AddSymbol(declarator, symbol); yield return(symbol); } }
public void Bind(SourceFieldSymbol field) => field.Initializer?.Accept(this);
internal void AddDependency(SourceFieldSymbol field) { this.dependencies.Add(field); }