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; } }