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