From 5032ab1df03210499b4a23403d9e4fa9ac8927c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Srbeck=C3=BD?= Date: Sun, 4 Nov 2007 15:11:39 +0000 Subject: [PATCH] Implemented 'ret' instruction (function return) --- src/AstMetodBodyBuilder.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/AstMetodBodyBuilder.cs b/src/AstMetodBodyBuilder.cs index e3265810c..7bb906f69 100644 --- a/src/AstMetodBodyBuilder.cs +++ b/src/AstMetodBodyBuilder.cs @@ -32,6 +32,7 @@ namespace Decompiler Ast.Statement astStatement = null; try { object codeExpr = MakeCodeDomExpression( + methodDef, instr, new Ast.IdentifierExpression("arg1"), new Ast.IdentifierExpression("arg2"), @@ -74,7 +75,7 @@ namespace Decompiler } } - static object MakeCodeDomExpression(Instruction inst, params Ast.Expression[] args) + static object MakeCodeDomExpression(MethodDefinition methodDef, Instruction inst, params Ast.Expression[] args) { OpCode opCode = inst.OpCode; object operand = inst.Operand; @@ -275,7 +276,7 @@ namespace Decompiler case Code.Readonly: throw new NotImplementedException(); case Code.Refanytype: throw new NotImplementedException(); case Code.Refanyval: throw new NotImplementedException(); - case Code.Ret: throw new NotImplementedException(); + case Code.Ret: return new Ast.ReturnStatement(methodDef.ReturnType.ReturnType.FullName != Cecil.Constants.Void ? arg1 : null); case Code.Rethrow: throw new NotImplementedException(); case Code.Sizeof: throw new NotImplementedException(); case Code.Starg: throw new NotImplementedException();