`x.o` is immutable. It is by design that `x` itself can be initialized in a shared static constructor. Initializing `x.o` directly is also OK (so long as it is not reassigned, that is not currently enforced though, but it is for a class constructor with immutable fields).
It is correct that the destructor can't mutate immutable data.
Comment #2 by nick — 2024-03-23T22:01:37Z
> that is not currently enforced though
That is issue 24449.