[Proposal]: Relaxed ordering for `partial` and `ref` modifiers
- Dominant language
- C#
- Stars
- 12.7k
- Forks
- 1.1k
- Avg merge
- 11h 1m
- Merged PRs (30d)
- 3
Description
Specification: https://github.com/dotnet/csharplang/blob/main/proposals/relaxed-partial-ref-ordering.md
Discussion: #8965 (converted from previous champion issue #946)
## Summary
[summary]: #summary
Allow the `partial` modifier to appear in any position in a modifier list on a type or member declaration.
Allow the `ref` modifier to appear in any position in a modifier list on a struct declaration.
```cs
// All errors in this sample would be removed by adopting the proposal:
internal partial class C { }
partial internal class C { } // error
internal ref struct RS { }
ref internal struct RS { } // error
internal ref partial struct RS { }
internal partial ref struct RS { } // error
partial ref internal struct RS { } // error
partial class Program
{
public partial Program();
partial public Program() { } // error
public partial int Prop { get; set; }
partial public int Prop { get => field; set; } // error
public partial void Method();
partial public void Method() { } // error
partial public event Action Event; // error
public partial event Action Event { add { } remove { } }
}
```
## Design meetings
- https://github.com/dotnet/csharplang/blob/master/meetings/2017/LDM-2017-12-04.md
- https://github.com/dotnet/csharplang/blob/main/meetings/2020/LDM-2020-09-09.md#champion-relax-ordering-constraints-around-ref-and-partial-modifiers-on-type-declarations
- https://github.com/dotnet/csharplang/blob/main/meetings/2026/LDM-2026-01-12.md#relaxed-ordering-for-partial-and-ref-modifiers
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.