Browse Source

Do not output the very last return statement

pull/1/head^2
David Srbecký 18 years ago
parent
commit
82d3debe87
  1. 3
      src/AstBuilder.cs
  2. 9
      src/AstMetodBodyBuilder.cs

3
src/AstBuilder.cs

@ -26,8 +26,11 @@ namespace Decompiler @@ -26,8 +26,11 @@ namespace Decompiler
string code = csOutVisitor.Text;
code = code.Replace(":\r\n\t\t\t", ": ");
code = code.Replace(": }", ":\r\n\t\t\t}");
code = code.Replace(":\r\n\t\t", ": ");
code = code.Replace(": }", ":\r\n\t\t}");
code = code.Replace(":\r\n\t", ": ");
code = code.Replace(": }", ":\r\n\t}");
code = code.Replace("\t", " ");
code = code.Replace("\"/*", "//");
code = code.Replace("*/\";", "");

9
src/AstMetodBodyBuilder.cs

@ -29,7 +29,8 @@ namespace Decompiler @@ -29,7 +29,8 @@ namespace Decompiler
astBlock.Children.Add(astLocalVar);
}
foreach(StackExpression expr in exprCol) {
for(int i = 0; i < exprCol.Count; i++) {
StackExpression expr = exprCol[i];
Ast.Statement astStatement = null;
try {
List<Ast.Expression> args = new List<Ast.Expression>();
@ -57,6 +58,12 @@ namespace Decompiler @@ -57,6 +58,12 @@ namespace Decompiler
if (expr.FirstByteCode.BranchesHere.Count > 0) {
astBlock.Children.Add(new Ast.LabelStatement(string.Format("IL_{0:X2}", expr.FirstByteCode.Offset)));
}
// Skip last return statement
if (i == exprCol.Count - 1 &&
expr.ExpressionByteCode.OpCode.Code == Code.Ret &&
expr.ExpressionByteCode.PopCount == 0) {
continue;
}
astBlock.Children.Add(astStatement);
}

Loading…
Cancel
Save