<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">On Apr 27, 2016, at 2:08 PM, Jérôme ALVES <<a href="mailto:j.alves@me.com" class="">j.alves@me.com</a>> wrote:<br class=""><div><blockquote type="cite" class=""><br class="Apple-interchange-newline"><div class=""><meta http-equiv="content-type" content="text/html; charset=utf-8" class=""><div dir="auto" class=""><div class="">What if... </div><div class=""><br class=""></div><div class=""><b class="">FooBar.framework defines :</b></div><div class=""><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">public protocol A {</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> func foo()</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">}</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">public type B: A {</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> public func foo () { </span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> … implementation … </span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> }</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">}</span></div><div class=""><br class=""></div><div class=""><b class="">Other module defines :</b></div><div class="">import FooBar</div><div class=""><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">extension A {</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""> func foo() { .. default implementation … }</span></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class="">}</span></div></div><div class=""><span style="background-color: rgba(255, 255, 255, 0);" class=""><br class=""></span></div></div></div></div></blockquote><div><br class=""></div><div>Under these circumstances because of the mandatory import statement, there is no difference between the extension being defined in or outside the module, so long as the other module access is public. If it is not visible to the conforming protocol, there is no issue.</div><div><br class=""></div><div>Conflicts of multiple protocol default implementations would need to be resolved exactly the same way as previously discussed, the only difference being namespacing:</div><div><br class=""></div><div>required foo = OtherModule.A.foo</div><div><br class=""></div><div>— E</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div dir="auto" class=""><div class=""><br class="">Jérôme </div><div class=""><br class="">Le 27 avr. 2016 à 19:10, Erica Sadun via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> a écrit :<br class=""><br class=""></div><blockquote type="cite" class=""><div class="">protocol A {</div><div class=""> func foo()</div><div class="">}</div><div class=""><br class=""></div><div class="">extension A {</div><div class=""> func foo() { .. default implementation … }</div><div class="">}</div><div class=""><br class=""></div><div class="">type B: A {</div><div class=""><br class=""></div><div class=""> override required func foo () { … overrides implementation … }</div><div class="">}</div></blockquote></div></div></blockquote></div></body></html>