diff --git a/proposals/csharp-11.0/low-level-struct-improvements.md b/proposals/csharp-11.0/low-level-struct-improvements.md index a1d2d369d3..1276d4d838 100644 --- a/proposals/csharp-11.0/low-level-struct-improvements.md +++ b/proposals/csharp-11.0/low-level-struct-improvements.md @@ -469,8 +469,11 @@ The `scoped` modifier and `[UnscopedRef]` attribute (see [below](#rules-unscoped Any other difference with respect to `scoped` or `[UnscopedRef]` is considered a mismatch. The compiler will report a diagnostic for _unsafe scoped mismatches_ across overrides, interface implementations, and delegate conversions when: -- The method returns a `ref struct` or returns a `ref` or `ref readonly`, or the method has a `ref` or `out` parameter of `ref struct` type, and -- The method has at least one additional `ref`, `in`, or `out` parameter, or a parameter of `ref struct` type. +- The method has a `ref` or `out` parameter of `ref struct` type with a mismatch of adding `[UnscopedRef]` (not removing `scoped`). + (In this case, a [silly cyclic assignment](#cyclic-assignment) is possible, hence no other parameters are necessary.) +- Or both of these are true: + - The method returns a `ref struct` or returns a `ref` or `ref readonly`, or the method has a `ref` or `out` parameter of `ref struct` type. + - The method has at least one additional `ref`, `in`, or `out` parameter, or a parameter of `ref struct` type. The rules above ignore `this` parameters because `ref struct` instance methods cannot be used for overrides, interface implementations, or delegate conversions.