Browse Source

Annotate anonymous methods/lambdas with the MethodDefinition representing the lambda body.

pull/234/merge
Daniel Grunwald 14 years ago
parent
commit
e8b6e3d808
  1. 4
      ICSharpCode.Decompiler/Ast/Transforms/DelegateConstruction.cs

4
ICSharpCode.Decompiler/Ast/Transforms/DelegateConstruction.cs

@ -136,6 +136,9 @@ namespace ICSharpCode.Decompiler.Ast.Transforms @@ -136,6 +136,9 @@ namespace ICSharpCode.Decompiler.Ast.Transforms
// Create AnonymousMethodExpression and prepare parameters
AnonymousMethodExpression ame = new AnonymousMethodExpression();
ame.CopyAnnotationsFrom(objectCreateExpression); // copy ILRanges etc.
ame.RemoveAnnotations<MethodReference>(); // remove reference to delegate ctor
ame.AddAnnotation(method); // add reference to anonymous method
ame.Parameters.AddRange(AstBuilder.MakeParameters(method, isLambda: true));
ame.HasParameterList = true;
@ -180,6 +183,7 @@ namespace ICSharpCode.Decompiler.Ast.Transforms @@ -180,6 +183,7 @@ namespace ICSharpCode.Decompiler.Ast.Transforms
}
if (isLambda) {
LambdaExpression lambda = new LambdaExpression();
lambda.CopyAnnotationsFrom(ame);
ame.Parameters.MoveTo(lambda.Parameters);
Expression returnExpr = ((ReturnStatement)body.Statements.Single()).Expression;
returnExpr.Remove();

Loading…
Cancel
Save