<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div></div><blockquote type="cite"><div><font color="#000000"><span style="background-color: rgba(255, 255, 255, 0);">On 23 Jan 2017, at 19:56, Slava Pestov &lt;<a href="mailto:spestov@apple.com">spestov@apple.com</a>&gt; wrote:<br><br></span></font></div><blockquote type="cite"><blockquote type="cite"><font color="#000000"><span style="background-color: rgba(255, 255, 255, 0);">class B: A {</span></font></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"></blockquote><blockquote type="cite"><font color="#000000"><span style="background-color: rgba(255, 255, 255, 0);">&nbsp;var item: String { // subclass specialises 'item' by "overriding" the protocol extension implementation<br></span></font></blockquote><font color="#000000"><span style="background-color: rgba(255, 255, 255, 0);"><br>This is the problem. You’re not overriding the protocol extension version, you’re just shadowing it for the purposes of compile-time name lookup. Note that if you add the ‘override’ keyword here, the compiler complains because there’s nothing in the base class to override.</span></font></blockquote></blockquote><br><div>Yes, that's why I wrote overriding in quotes and also why I tried to use the word specialise in place of override. My beef is not really here; this really was just a preamble. My issue is with the fact that adding the declaration to the protocol doesn't solve the problem despite the fact that the property is then supposed to be dynamically dispatched but isn't.</div></body></html>