Exemple #1
0
 internal ConstantFieldsInProgress(
     SourceFieldSymbol fieldOpt,
     HashSet <SourceFieldSymbolWithSyntaxReference> dependencies)
 {
     _fieldOpt     = fieldOpt;
     _dependencies = dependencies;
 }
Exemple #2
0
 internal ConstantFieldsInProgress(
     SourceFieldSymbol fieldOpt,
     HashSet <SourceFieldSymbol> dependencies)
 {
     this.fieldOpt     = fieldOpt;
     this.dependencies = dependencies;
 }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            }
        }
Exemple #5
0
 public void Bind(SourceFieldSymbol field) => field.Initializer?.Accept(this);
Exemple #6
0
 internal void AddDependency(SourceFieldSymbol field)
 {
     this.dependencies.Add(field);
 }