<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
I knew there were good reasons for this. Thanks mates.<div><br /></div><div>(I don't personally see a need for a new @nonoverriding feature, by the way.)</div><div><br />27. Jan 2017 22:26 by <a href="mailto:jordan_rose@apple.com" target="_blank" rel="noopener noreferrer">jordan_rose@apple.com</a>:<br /><br /><blockquote class="tutanota_quote" style="border-left: 1px solid #93A3B8; padding-left: 10px; margin-left: 5px;"><br /><div><blockquote class="thunderbird_quote" style="border-left: 1px solid #93a3b8 ; padding-left: 10px ; margin-left: 5px"><div>On Jan 27, 2017, at 11:04, Slava Pestov via swift-users &lt;<a href="mailto:swift-users@swift.org" target="_blank" rel="noopener noreferrer">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline" /><div><div style="font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; white-space: normal ; word-spacing: 0px"><blockquote class="thunderbird_quote" style="border-left: 1px solid #93a3b8 ; padding-left: 10px ; margin-left: 5px"><div><br class="Apple-interchange-newline" />On Jan 27, 2017, at 10:39 AM, tuuranton--- via swift-users &lt;<a href="mailto:swift-users@swift.org" target="_blank" rel="noopener noreferrer">swift-users@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline" /><div><div>Yes, but why?<div><br /><div>What's the rationale for this?</div><div><br /></div><div>What would be so bad about allowing overriding a non-failable initializer with a failable initializer?</div></div></div></div></blockquote><div><br /></div>If the non-failable initializer witnesses a non-failable protocol requirement, and the subclass overrides it, what should be the runtime behavior if the subclass initializer returns nil? The caller won’t expect it, since the caller is calling a non-failable initializer.</div></div></blockquote><div><br /></div><div>This <i>particular</i>&nbsp;objection only applies to 'required' initializers, though.</div><div><br /></div><br /><blockquote class="thunderbird_quote" style="border-left: 1px solid #93a3b8 ; padding-left: 10px ; margin-left: 5px"><div><div style="font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; white-space: normal ; word-spacing: 0px"><br /></div><div style="font-family: &quot;helvetica&quot; ; font-size: 12px ; font-style: normal ; font-weight: normal ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; white-space: normal ; word-spacing: 0px">For similar reasons, you cannot override a method that returns a non-optional value with a method returning an optional value.</div></div></blockquote><br /></div><div>Yes, this is true.</div><div><br /></div><div>Jordan</div><br /></blockquote></div>  </body>
</html>