<div dir="ltr">On 19 October 2017 at 05:04, Xiaodi Wu <span dir="ltr">&lt;<a href="mailto:xiaodi.wu@gmail.com" target="_blank">xiaodi.wu@gmail.com</a>&gt;</span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="gmail-"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><div></div></div></blockquote></span><div><br></div><div>d) Does a class that override a `@discardable` type inherit that annotation? If not, they it&#39;s kind of a weird exception to the inheritance thing, no? If so, then we&#39;d need a @nondiscardable annotation to do type-level overrides of @discardable.</div><div><br></div></div></div></div></blockquote><div><br></div><div>the very current form of @discardableResult as a function attribute leads to these type of questions in the first place. if it was a type modifier - there would be no doubt:</div><div><br></div><div>class A {</div><div>    func foo() -&gt; Bool {<br></div><div>        ...</div><div>    }</div><div><br></div><div>    func bar() -&gt; discardable Bool {</div><div>        ...</div><div>    }</div><div>}</div><div><br></div><div>class B: A {</div><div>    override func foo() -&gt; discardable Bool { // ok, types compatible<br></div><div>       ...</div><div>    }</div><div><br></div><div>    override func bar() -&gt; Bool { // error. types mismatch</div><div>        ...</div><div>    }</div><div>}</div><div><br></div><div>Mike</div><div><br></div></div></div></div>