public void Resolve(VBAParser.ForEachStmtContext context) { var identifiers = context.ambiguousIdentifier(); var identifier = ResolveInternal(identifiers[0], _currentScope, ContextAccessorType.AssignValue, null, false, true); // each iteration counts as an assignment var reference = CreateReference(identifiers[0], identifier, true); identifier.AddReference(reference); if (identifiers.Count > 1) { identifier.AddReference(CreateReference(identifiers[1], identifier)); } }
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]); } }
public override void EnterForEachStmt([NotNull] VBAParser.ForEachStmtContext context) => workingValue++;
public override void EnterForEachStmt(VBAParser.ForEachStmtContext context) { _resolver.Resolve(context); }
public override void EnterForEachStmt([NotNull] VBAParser.ForEachStmtContext context) { InspectBlockForExecutableStatements(context.block(), context); }
// notably: NO additional complexity for an Else-Block public override void EnterForEachStmt([NotNull] VBAParser.ForEachStmtContext context) { _results.Add(new CodeMetricsResult(0, 1, 0)); }