Browse Source

Fix bugs in NormalizeBlockStatements

pull/976/head
Siegfried Pammer 8 years ago
parent
commit
082581de34
  1. 7
      ICSharpCode.Decompiler/CSharp/Transforms/NormalizeBlockStatements.cs

7
ICSharpCode.Decompiler/CSharp/Transforms/NormalizeBlockStatements.cs

@ -67,6 +67,8 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
} else { } else {
if (statement is BlockStatement b && b.Statements.Count == 1 && IsAllowed(b.Statements.First(), parent)) { if (statement is BlockStatement b && b.Statements.Count == 1 && IsAllowed(b.Statements.First(), parent)) {
statement.ReplaceWith(b.Statements.First().Detach()); statement.ReplaceWith(b.Statements.First().Detach());
} else if (!IsAllowed(statement, parent)) {
InsertBlock(statement);
} }
} }
} }
@ -84,8 +86,9 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
bool IsAllowed(Statement statement, Statement parent) bool IsAllowed(Statement statement, Statement parent)
{ {
switch (statement) { switch (statement) {
case VariableDeclarationStatement vds:
case IfElseStatement ies: case IfElseStatement ies:
return !(parent is IfElseStatement);
case VariableDeclarationStatement vds:
case WhileStatement ws: case WhileStatement ws:
case DoWhileStatement dws: case DoWhileStatement dws:
case SwitchStatement ss: case SwitchStatement ss:
@ -97,7 +100,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
case UsingStatement us: case UsingStatement us:
return parent is UsingStatement; return parent is UsingStatement;
default: default:
return true; return !(parent?.Parent is IfElseStatement);
} }
} }

Loading…
Cancel
Save