Double initialization with init accessors

In the proposal of SE-0400, at the end of the section "Definite initialization of properties on self", there's this code.

struct S {
  var x: Int
  var y: Int
  var point: (Int, Int) {
    @storageRestrictions(initializes: x, y)
    init(newValue) {
      (self.x, self.y) = newValue
    get { (x, y) }
    set { (x, y) = newValue }

  init(x: Int, y: Int) {
    self.x = x // Only initializes 'x'
    self.point = (x, y) // error: neither the `init` accessor nor the setter can be called here

It says the above code will produce an error. However, when compiled using the latest nightly build, no error is emitted. The init accessor is called for the last line.

In my understanding, this behavior is consistent with manually written double-initialization code, which is accepted by the compiler:

struct A {
  var a: Int
  var b: Int
  init() {
    self.a = 10
    (self.a, self.b) = (10, 20)  // overlapped double initialization, no problem

Is this behavior by design? Does the text in the proposal needs some adjustment?

@hborla @Douglas_Gregor could you lend me some insights, thanks!