/ICSharpCode.Decompiler/Ast/Transforms/FlattenSwitchBlocks.cs
http://github.com/icsharpcode/ILSpy · C# · 27 lines · 24 code · 3 blank · 0 comment · 5 complexity · 4d99459ade0abaaee29ad40bccf97b95 MD5 · raw file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using ICSharpCode.NRefactory.CSharp;
- namespace ICSharpCode.Decompiler.Ast.Transforms
- {
- class FlattenSwitchBlocks : IAstTransform
- {
- public void Run(AstNode compilationUnit)
- {
- foreach (var switchSection in compilationUnit.Descendants.OfType<SwitchSection>())
- {
- if (switchSection.Statements.Count != 1)
- continue;
- var blockStatement = switchSection.Statements.First() as BlockStatement;
- if (blockStatement == null || blockStatement.Statements.Any(st => st is VariableDeclarationStatement))
- continue;
- blockStatement.Remove();
- blockStatement.Statements.MoveTo(switchSection.Statements);
- }
- }
- }
- }