Exemple #1
0
        public void Resolve(VBAParser.ForEachStmtContext context)
        {
            var expressions = context.expression();

            var elementVariableExpression = expressions[0];

            ResolveDefault(elementVariableExpression, isAssignmentTarget: true);

            var collectionExpression = expressions[1];

            ResolveDefault(collectionExpression);

            const int firstNextExpressionIndex = 2;

            for (var exprIndex = firstNextExpressionIndex; exprIndex < context.expression().Length; exprIndex++)
            {
                ResolveDefault(expressions[exprIndex]);
            }
        }
Exemple #2
0
        public void Resolve(VBAParser.ForEachStmtContext context)
        {
            var firstExpression = _bindingService.ResolveDefault(
                _moduleDeclaration,
                _currentParent,
                context.expression()[0],
                GetInnerMostWithExpression(),
                StatementResolutionContext.Undefined);

            if (firstExpression.Classification == ExpressionClassification.ResolutionFailed)
            {
                _boundExpressionVisitor.AddIdentifierReferences(
                    firstExpression,
                    _qualifiedModuleName,
                    _currentScope,
                    _currentParent);
            }
            else
            {
                // each iteration counts as an assignment
                _boundExpressionVisitor.AddIdentifierReferences(
                    firstExpression,
                    _qualifiedModuleName,
                    _currentScope,
                    _currentParent,
                    true);
                _boundExpressionVisitor.AddIdentifierReferences(
                    firstExpression,
                    _qualifiedModuleName,
                    _currentScope,
                    _currentParent);
            }
            for (int exprIndex = 1; exprIndex < context.expression().Count; exprIndex++)
            {
                ResolveDefault(context.expression()[exprIndex]);
            }
        }