Swift Initialiser Bug?
<p>Edit: finished, duplicate of <a href="https://stackoverflow.com/questions/8762234/why-doesnt-this-obvious-infinite-recursion-give-a-compiler-warning">Why doesn&#39;t this obvious infinite recursion give a compiler warning?</a>
I believed that given the many clever warnings Swift has and also the designated initialiser system that it was reasonable to expect a warning, but this is wrong, as explained in the above.</p>

<p>I found this interesting example by playing around with protocol extensions, then realised it screws up structs as well.</p>

<pre><code>struct WhatThe {
let a = 1
init(value: Int) {
    self.init()
}

init() {
    self.init(0)
}
}

print(WhatThe().a) //nothing is printed and the CPU goes nuts.
</code></pre>

<p>This is a bug isn't it? I understand this is an infinite loop, I'm just really surprised Apple allowed this.
This code has no warnings and builds fine, Playground even runs it.
I feel like this kind of thing was an obvious issue in the language to get rid of. It's fine in classes right?- because these are both convenience initialisers?</p>