diff --git a/ICSharpCode.Decompiler/Ast/TextOutputFormatter.cs b/ICSharpCode.Decompiler/Ast/TextOutputFormatter.cs index c43b0c7c2..0f1889b48 100644 --- a/ICSharpCode.Decompiler/Ast/TextOutputFormatter.cs +++ b/ICSharpCode.Decompiler/Ast/TextOutputFormatter.cs @@ -84,7 +84,9 @@ namespace ICSharpCode.Decompiler.Ast { AstNode node = nodeStack.Peek(); MemberReference memberRef = node.Annotation(); - if (memberRef == null && node.Role == Roles.TargetExpression && (node.Parent is InvocationExpression || node.Parent is ObjectCreateExpression)) { + if ((node.Role == Roles.Type && node.Parent is ObjectCreateExpression) || + (memberRef == null && node.Role == Roles.TargetExpression && (node.Parent is InvocationExpression || node.Parent is ObjectCreateExpression))) + { memberRef = node.Parent.Annotation(); } return memberRef; @@ -160,7 +162,12 @@ namespace ICSharpCode.Decompiler.Ast public void WriteKeyword(string keyword) { - output.Write(keyword); + MemberReference memberRef = GetCurrentMemberReference(); + var node = nodeStack.Peek(); + if (memberRef != null && node is ConstructorInitializer) + output.WriteReference(keyword, memberRef); + else + output.Write(keyword); } public void WriteToken(string token)