Browse Source

Fix translation of DynamicInvokeConstructorInstruction

pull/1165/head
Siegfried Pammer 7 years ago
parent
commit
87d5091ac9
  1. 6
      ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

6
ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs

@ -2363,8 +2363,10 @@ namespace ICSharpCode.Decompiler.CSharp
protected internal override TranslatedExpression VisitDynamicInvokeConstructorInstruction(DynamicInvokeConstructorInstruction inst, TranslationContext context) protected internal override TranslatedExpression VisitDynamicInvokeConstructorInstruction(DynamicInvokeConstructorInstruction inst, TranslationContext context)
{ {
IL.Transforms.TransformExpressionTrees.MatchGetTypeFromHandle(inst.Arguments[0], out var constructorType); if (!(inst.ArgumentInfo[0].Flags.HasFlag(CSharpArgumentInfoFlags.IsStaticType) && IL.Transforms.TransformExpressionTrees.MatchGetTypeFromHandle(inst.Arguments[0], out var constructorType)))
return new ObjectCreateExpression(ConvertType(constructorType), inst.Arguments.Skip(1).Select(arg => Translate(arg, SpecialType.Dynamic).Expression)) throw new NotSupportedException();
var arguments = TranslateDynamicArguments(inst.Arguments.Skip(1), inst.ArgumentInfo.Skip(1));
return new ObjectCreateExpression(ConvertType(constructorType), arguments)
.WithILInstruction(inst).WithRR(new ResolveResult(constructorType)); .WithILInstruction(inst).WithRR(new ResolveResult(constructorType));
} }

Loading…
Cancel
Save