diff --git a/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpAmbience.cs b/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpAmbience.cs index f24f57489..93408ef5f 100644 --- a/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpAmbience.cs +++ b/ICSharpCode.Decompiler/CSharp/OutputVisitor/CSharpAmbience.cs @@ -230,6 +230,8 @@ namespace ICSharpCode.Decompiler.CSharp.OutputVisitor astBuilder.AlwaysUseShortTypeNames = (ConversionFlags & ConversionFlags.UseFullyQualifiedTypeNames) != ConversionFlags.UseFullyQualifiedTypeNames; astBuilder.ShowParameterNames = (ConversionFlags & ConversionFlags.ShowParameterNames) == ConversionFlags.ShowParameterNames; astBuilder.UseNullableSpecifierForValueTypes = (ConversionFlags & ConversionFlags.UseNullableSpecifierForValueTypes) != 0; + astBuilder.SupportInitAccessors = (ConversionFlags & ConversionFlags.SupportInitAccessors) != 0; + astBuilder.SupportRecordClasses = (ConversionFlags & ConversionFlags.SupportRecordClasses) != 0; return astBuilder; } diff --git a/ICSharpCode.Decompiler/Output/IAmbience.cs b/ICSharpCode.Decompiler/Output/IAmbience.cs index 4637ddc91..4dc853247 100644 --- a/ICSharpCode.Decompiler/Output/IAmbience.cs +++ b/ICSharpCode.Decompiler/Output/IAmbience.cs @@ -97,6 +97,14 @@ namespace ICSharpCode.Decompiler.Output /// Use T? instead of Nullable<T>. /// UseNullableSpecifierForValueTypes = 0x8000, + /// + /// Support init accessors. + /// + SupportInitAccessors = 0x10000, + /// + /// Support record classes. + /// + SupportRecordClasses = 0x20000, StandardConversionFlags = ShowParameterNames | ShowAccessibility | diff --git a/ILSpy/Languages/CSharpLanguage.cs b/ILSpy/Languages/CSharpLanguage.cs index 38e2ab6a4..777264eee 100644 --- a/ILSpy/Languages/CSharpLanguage.cs +++ b/ILSpy/Languages/CSharpLanguage.cs @@ -717,6 +717,14 @@ namespace ICSharpCode.ILSpy { flags &= ~ConversionFlags.UseNullableSpecifierForValueTypes; } + if (settings.RecordClasses) + { + flags |= ConversionFlags.SupportRecordClasses; + } + if (settings.InitAccessors) + { + flags |= ConversionFlags.SupportInitAccessors; + } if (entity is IMethod m && m.IsLocalFunction) { writer.WriteIdentifier(Identifier.Create("(local)"));