You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
729 B
27 lines
729 B
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);
|
|
}
|
|
}
|
|
}
|
|
}
|