From 938736a49b65977ba84a4aa646696e156521c5bb Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sat, 4 Jun 2016 18:46:46 +0900 Subject: [PATCH] simplify b0e760f004688fccfbe569708d298f39c1955e1d --- .../Transforms/PatternStatementTransform.cs | 38 +------------------ 1 file changed, 2 insertions(+), 36 deletions(-) diff --git a/ICSharpCode.Decompiler/Ast/Transforms/PatternStatementTransform.cs b/ICSharpCode.Decompiler/Ast/Transforms/PatternStatementTransform.cs index 6a8a7a1cc..d38116f11 100644 --- a/ICSharpCode.Decompiler/Ast/Transforms/PatternStatementTransform.cs +++ b/ICSharpCode.Decompiler/Ast/Transforms/PatternStatementTransform.cs @@ -421,8 +421,9 @@ namespace ICSharpCode.Decompiler.Ast.Transforms return null; // Make sure that the enumerator variable is not used inside the body + var enumeratorId = Identifier.Create(enumeratorVar.Name); foreach (Statement stmt in m.Get("statement")) { - if (UsesEnumerator(stmt, enumeratorVar.Name)) + if (stmt.Descendants.OfType().Any(id => enumeratorId.IsMatch(id))) return null; } @@ -1166,40 +1167,5 @@ namespace ICSharpCode.Decompiler.Ast.Transforms return null; } #endregion - - #region UsesEnumerator helper - class UsesEnumeratorVisitor : DepthFirstAstVisitor - { - Identifier enumeratorIdentifier; - - public UsesEnumeratorVisitor(string identifier) - { - enumeratorIdentifier = Identifier.Create(identifier); - } - - protected override bool VisitChildren(AstNode node) - { - AstNode next; - for (var child = node.FirstChild; child != null; child = next) { - // Store next to allow the loop to continue - // if the visitor removes/replaces child. - next = child.NextSibling; - if (child.AcceptVisitor(this)) - return true; - } - return false; - } - - public override bool VisitIdentifier(Identifier identifier) - { - return identifier.IsMatch(enumeratorIdentifier); - } - } - - bool UsesEnumerator(Statement statement, string enumeratorVarName) - { - return statement.AcceptVisitor(new UsesEnumeratorVisitor(enumeratorVarName)); - } - #endregion } }