Browse Source

Fix #3159: CSharpAmbience.ConvertSymbol output incorrect for record structs and init properties.

pull/3266/head
Siegfried Pammer 9 months ago
parent
commit
43f602211b
  1. 9
      ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpAmbience.cs

9
ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpAmbience.cs

@ -85,6 +85,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor @@ -85,6 +85,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
break;
case ClassType.RecordStruct:
writer.WriteKeyword(Roles.RecordKeyword, "record");
writer.Space();
writer.WriteKeyword(Roles.StructKeyword, "struct");
break;
default:
@ -181,8 +182,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor @@ -181,8 +182,7 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
if ((ConversionFlags & ConversionFlags.ShowBody) == ConversionFlags.ShowBody && !(node is TypeDeclaration))
{
IProperty property = symbol as IProperty;
if (property != null)
if (symbol is IProperty property)
{
writer.Space();
writer.WriteToken(Roles.LBrace, "{");
@ -195,7 +195,10 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor @@ -195,7 +195,10 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor
}
if (property.CanSet)
{
writer.WriteKeyword(PropertyDeclaration.SetKeywordRole, "set");
if ((ConversionFlags & ConversionFlags.SupportInitAccessors) != 0 && property.Setter.IsInitOnly)
writer.WriteKeyword(PropertyDeclaration.InitKeywordRole, "init");
else
writer.WriteKeyword(PropertyDeclaration.SetKeywordRole, "set");
writer.WriteToken(Roles.Semicolon, ";");
writer.Space();
}

Loading…
Cancel
Save