public void Reset() { int count = _count; if (count >= 0) { IfStatementSyntax ifStatement; if (_ifOrElse.IsElse) { ifStatement = (IfStatementSyntax)_ifOrElse.Parent; } else { ifStatement = _ifOrElse.AsIf(); } count--; while (count >= 0) { ifStatement = (IfStatementSyntax)ifStatement.Parent.Parent; count--; } _ifOrElse = ifStatement; } }
public bool MoveNext() { if (_count == -1) { if (_ifOrElse != default(IfStatementOrElseClause)) { _count++; return(true); } } else if (_ifOrElse.IsIf) { ElseClauseSyntax elseClause = _ifOrElse.AsIf().Else; if (elseClause != null) { if (elseClause.Statement is IfStatementSyntax nextIf) { _ifOrElse = nextIf; } else { _ifOrElse = elseClause; } _count++; return(true); } } return(false); }
private static bool IsValueAssignedInLastStatement(IfStatementOrElseClause ifOrElse, ISymbol symbol, SemanticModel semanticModel, CancellationToken cancellationToken) { StatementSyntax statement = GetLastStatementOrDefault(ifOrElse.Statement); ExpressionSyntax left = GetLastAssignmentOrDefault(statement)?.Left; return(left != null && symbol.Equals(semanticModel.GetSymbol(left, cancellationToken))); }
internal Enumerator(IfStatementSyntax ifStatement) { _ifOrElse = ifStatement; _count = -1; }
private static bool IsSymbolAssignedInLastStatement(IfStatementOrElseClause ifOrElse, ISymbol symbol, SemanticModel semanticModel, CancellationToken cancellationToken) { StatementSyntax statement = GetLastStatementOrDefault(ifOrElse.Statement); return(IsSymbolAssignedInStatement(symbol, statement, semanticModel, cancellationToken)); }