private void AnalyzeForLoop([NotNull] IForLoopOperation forLoopOperation, OperationAnalysisContext context)
        {
            foreach (IOperation beforeOperation in forLoopOperation.Before)
            {
                AnalyzeForLoopSection(ForLoopSection.Before, beforeOperation, context);
            }

            AnalyzeForLoopSection(ForLoopSection.Condition, forLoopOperation.Condition, context);

            foreach (IOperation bottomOperation in forLoopOperation.AtLoopBottom)
            {
                AnalyzeForLoopSection(ForLoopSection.AtLoopBottom, bottomOperation, context);
            }
        }
Exemplo n.º 2
0
        public override void VisitForLoop(IForLoopOperation operation)
        {
            Assert.Equal(OperationKind.Loop, operation.Kind);
            Assert.Equal(LoopKind.For, operation.LoopKind);
            VisitLocals(operation);

            IEnumerable <IOperation> children = operation.Before;

            if (operation.Condition != null)
            {
                children = children.Concat(new[] { operation.Condition });
            }

            children = children.Concat(new[] { operation.Body });
            children = children.Concat(operation.AtLoopBottom);

            AssertEx.Equal(children, operation.Children);
        }
Exemplo n.º 3
0
 public override void VisitForLoop([NotNull] IForLoopOperation operation)
 {
     if (section == ForLoopSection.Before)
     {
         VisitArray(operation.Before);
     }
     else if (section == ForLoopSection.Condition)
     {
         Visit(operation.Condition);
     }
     else if (section == ForLoopSection.AtLoopBottom)
     {
         VisitArray(operation.AtLoopBottom);
     }
     // ReSharper disable once RedundantIfElseBlock
     else
     {
         // No action required.
     }
 }
            public override void VisitForLoop([NotNull] IForLoopOperation operation)
            {
                switch (section)
                {
                case ForLoopSection.Before:
                {
                    VisitArray(operation.Before);
                    break;
                }

                case ForLoopSection.Condition:
                {
                    Visit(operation.Condition);
                    break;
                }

                case ForLoopSection.AtLoopBottom:
                {
                    VisitArray(operation.AtLoopBottom);
                    break;
                }
                }
            }
Exemplo n.º 5
0
 public override IOperation VisitForLoop(IForLoopOperation operation, object argument)
 {
     return(new ForLoopStatement(VisitArray(operation.Before), Visit(operation.Condition), VisitArray(operation.AtLoopBottom), operation.Locals, operation.ConditionLocals,
                                 operation.ContinueLabel, operation.ExitLabel, Visit(operation.Body), ((Operation)operation).SemanticModel, operation.Syntax, operation.Type, operation.ConstantValue, operation.IsImplicit));
 }
Exemplo n.º 6
0
 public virtual void VisitForLoop(IForLoopOperation operation)
 {
     DefaultVisit(operation);
 }
Exemplo n.º 7
0
 public override void VisitForLoop([NotNull] IForLoopOperation operation)
 {
     base.VisitForLoop(operation);
 }
 public override void VisitForLoop([NotNull] IForLoopOperation operation)
 {
     IncrementStatementCount(operation);
     base.VisitForLoop(operation);
 }
            public override Location VisitForLoop([NotNull] IForLoopOperation operation, [CanBeNull] object argument)
            {
                var syntax = (ForStatementSyntax)operation.Syntax;

                return(syntax.ForKeyword.GetLocation());
            }
Exemplo n.º 10
0
        public override void VisitForLoop(IForLoopOperation operation)
        {
            WalkLoop(operation);

            base.VisitForLoop(operation);
        }
Exemplo n.º 11
0
 public override bool VisitForLoop([NotNull] IForLoopOperation operation1, [CanBeNull] IOperation argument)
 {
     return(argument is IForLoopOperation operation2 && AreBaseOperationsEqual(operation1, operation2) &&
            operation1.LoopKind == operation2.LoopKind && AreSymbolSequencesEqual(operation1.Locals, operation2.Locals));
 }
Exemplo n.º 12
0
 public override void VisitForLoop([NotNull] IForLoopOperation operation)
 {
     LoopStatementLocation = operation.GetLocationForKeyword();
 }