Browse Source

Fix #617: Incorrect C# translation when `callvirt` is used to invoke base constructor

pull/1464/head
Daniel Grunwald 6 years ago
parent
commit
ae2824af99
  1. 5
      ICSharpCode.Decompiler.Tests/TestCases/ILPretty/FSharpLoops_Debug.cs
  2. 5
      ICSharpCode.Decompiler.Tests/TestCases/ILPretty/FSharpLoops_Release.cs
  3. 2
      ICSharpCode.Decompiler/CSharp/CallBuilder.cs

5
ICSharpCode.Decompiler.Tests/TestCases/ILPretty/FSharpLoops_Debug.cs

@ -36,11 +36,6 @@ public static class Program
[CompilationMapping(SourceConstructFlags.Closure)]
internal sealed class disposable_00403 : IDisposable
{
public disposable_00403()
{
((object)this)._002Ector();
}
private void System_002DIDisposable_002DDispose()
{
}

5
ICSharpCode.Decompiler.Tests/TestCases/ILPretty/FSharpLoops_Release.cs

@ -37,11 +37,6 @@ public static class Program
[CompilationMapping(SourceConstructFlags.Closure)]
internal sealed class disposable_00403 : IDisposable
{
public disposable_00403()
{
((object)this)._002Ector();
}
private void System_002DIDisposable_002DDispose()
{
}

2
ICSharpCode.Decompiler/CSharp/CallBuilder.cs

@ -187,7 +187,7 @@ namespace ICSharpCode.Decompiler.CSharp
} else {
target = expressionBuilder.TranslateTarget(
callArguments.FirstOrDefault(),
nonVirtualInvocation: callOpCode == OpCode.Call,
nonVirtualInvocation: callOpCode == OpCode.Call || method.IsConstructor,
memberStatic: method.IsStatic,
memberDeclaringType: constrainedTo ?? method.DeclaringType);
if (constrainedTo == null

Loading…
Cancel
Save