i seem to have been mistaken, a basic test on 5.9 using
public
struct S
{
public
var x:Int
public
var y:Int
}
and an out-of-module function
import S
public
func f(_ s:inout S)
{
{
s.y = $0
} (&s.x)
}
does not raise any errors, even though by all reasoning based on @frozen
-less abstraction, it should.
i don’t know if this is intended behavior or if the compiler is just failing to emit a diagnostic. but i found it surprising that an out-of-module consumer of a non-frozen type has knowledge of the layout of that type. this seems to contradict a lot of what we have been told about stored properties.