From 1df05e09e905512f6e661cc332168c4e4d380a39 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 5 May 2018 19:39:06 +0200 Subject: [PATCH] Fix base constructor calls. --- ICSharpCode.Decompiler/CSharp/CallBuilder.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ICSharpCode.Decompiler/CSharp/CallBuilder.cs b/ICSharpCode.Decompiler/CSharp/CallBuilder.cs index 6a84cda9c..06065c947 100644 --- a/ICSharpCode.Decompiler/CSharp/CallBuilder.cs +++ b/ICSharpCode.Decompiler/CSharp/CallBuilder.cs @@ -209,10 +209,12 @@ namespace ICSharpCode.Decompiler.CSharp } else { if (method.IsStatic) requireTarget = !expressionBuilder.IsCurrentOrContainingType(method.DeclaringTypeDefinition) || method.Name == ".cctor"; + else if (method.Name == ".ctor") + requireTarget = true; // always use target for base/this-ctor-call, the constructor initializer pattern depends on this else if (target.Expression is BaseReferenceExpression) requireTarget = (callOpCode != OpCode.CallVirt && method.IsVirtual); else - requireTarget = !(target.Expression is ThisReferenceExpression) || method.Name == ".ctor"; + requireTarget = !(target.Expression is ThisReferenceExpression); } bool targetCasted = false; bool argumentsCasted = false;