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!