MyDeveloperDay added a comment. There is more to this than meets the eye.. what we have so far, from existing `AfterFunction` use and the propsed here `AfterCSharpProperty` is...
public Foo { <--- controlled by **AfterFunction **(rightly or wrongly) get { <--- proposing to controlled by **AfterCSharpProperty** return; } set { val= value; } } But for trivial Properties, these are automatically assumed to be wanted on the same line. public Foo { set; get} Trivial Properties are defined as: all ordering variants (public/internal/private) set;get; public set;get public init;get get;set My problem is AfterFunction ONLY kicks in if this isn't a TrivialProperty.. We can't currently force TrivialProperties to be handled differently. AfterFunction = true we get public Foo { set; get} // we can't get to public Foo { set; get } Handling of Trivial Properties I feel there should be an "**AllowCSharpPropertiesOnASingleLine**" to match other options, otherwise it should follow AfterFunction (**AllowCSharpPropertiesOnASingleLine **default would need to be **true **to match current behaviour) **AllowCSharpPropertiesOnASingleLine **=true, **AfterFunction **= true/false public Foo { set; get } **AllowCSharpPropertiesOnASingleLine **= false, **AfterFunction **= true public Foo { set; get } So then how do we handle set;get vs set; get; Should **AfterCSharpProperty **be use in this case? or do we introduce "**BreakBetweenCSharpProperties **" (default false) I know it seems strange to add 3 options to handle this, but I think it would give people the best of both worlds you can have the following in the same file (which is actually quite common) **BreakBetweenCSharpProperties **= false **AllowCSharpPropertiesOnASingleLine **= true **AfterFunction **= true **AfterCSharpProperty **= true public Foo { get { return value; } set { value = 123; } } public Bar { get; set; } If we use**AfterCSharpProperty ** to control **BreakBetweenCSharpProperties **then I think we have to have the following and we can't control Bar how we might want public Foo { get { return value; } set { value = 123; } } public Bar { get; set; } From what I can tell...Microsoft .NET Framework seems to be **BreakBetweenCSharpProperties **= true **AllowCSharpPropertiesOnASingleLine **= false **AfterFunction **= true **AfterCSharpProperty **= true https://github.com/microsoft/referencesource/blob/5697c29004a34d80acdaf5742d7e699022c64ecd/mscorlib/system/iappdomainsetup.cs https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/using-properties It would seem they don't seem to put Trivial Properties/AutoProperties on the same line CHANGES SINCE LAST ACTION https://reviews.llvm.org/D148467/new/ https://reviews.llvm.org/D148467 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits