The compiler hard-codes in that a ref-struct collection expression that implements IEnumerable has 'local scope'. This was hardcoded in because originally this was just an error (it used to not be legal to have a ref-struct implementing an interface).
For example, the following is legal:
ref struct R : IEnumerable
{
public void Add(int x) { }
// implementation of IEnumerable...
}
Now that that's legal we need to properly do the analysis here. The analysis of R r = [with(...), x, y, .. z] is complex. Basically, it should be hte intersection of the ref-safety of hte call to the constructor that with(...) defers to, along with the ref-safety of all the .Add calls that are made for .Add(x), .Add(y), foreach (var v in z) .Add(v).
This is challenging as the determination of what .Add methods are called is deferred till lowering.