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)"));