<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=""><div class="">Huge +1 in general, but with one exception:</div><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 30, 2017, at 12:07 PM, Ross O'Brien via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><div class=""><div dir="ltr" class=""><div class=""><div class=""><div class=""><div class=""><div style="font-size:12.800000190734863px" class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo; color: rgb(186, 45, 162);" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo; color: rgb(186, 45, 162);" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">struct</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> Foo</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">{</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo; color: rgb(0, 132, 0);" class=""><span style="font-variant-ligatures: no-common-ligatures;" class=""><span style="white-space:pre-wrap" class=""> </span></span><span style="color:rgb(186,45,162)" class="">conformance</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> Bar </span><span style="font-variant-ligatures:no-common-ligatures" class="">// or conformance Foo : Bar, but since the region is inside Foo that's redundant</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="white-space:pre-wrap" class=""> </span>{</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures;white-space:pre-wrap" class=""><font class=""> </font></span><span style="color:rgb(186,45,162);font-variant-ligatures:no-common-ligatures" class="">var</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> integer : Int </span><span style="color:rgb(0,132,0);font-variant-ligatures:no-common-ligatures" class="">// visible because Foo : Bar, at Bar's access level</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo; min-height: 13px;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""></span><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures;white-space:pre-wrap" class=""><font class=""> </font></span><span style="color:rgb(186,45,162);font-variant-ligatures:no-common-ligatures" class="">var</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> counter : Int = </span><span style="color:rgb(39,42,216);font-variant-ligatures:no-common-ligatures" class="">0</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> </span><span style="color:rgb(0,132,0);font-variant-ligatures:no-common-ligatures" class="">// only visible inside the conformance scope, because not declared in Bar</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo; min-height: 13px;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""></span><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures;white-space:pre-wrap" class=""><font class=""> </font></span><span style="color:rgb(186,45,162);font-variant-ligatures:no-common-ligatures" class="">func</span><span style="font-variant-ligatures: no-common-ligatures;" class=""> increment() </span><span style="color:rgb(0,132,0);font-variant-ligatures:no-common-ligatures" class="">// visible because Foo : Bar, at Bar's access level</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="white-space:pre-wrap" class=""> </span>{</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="white-space:pre-wrap" class=""> </span>counter += </span><span style="font-variant-ligatures:no-common-ligatures;color:rgb(39,42,216)" class="">1</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="white-space:pre-wrap" class=""> </span>}</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class=""><span style="white-space:pre-wrap" class=""> </span>}</span></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="font-variant-ligatures:no-common-ligatures" class="">}</span></div></div></div></div></div></div></div></div></blockquote><br class=""></div><div>Making ‘counter’ private here without being annotated as such is just going to cause confusion. If a member is to be private to the conformance, it should have the ‘private’ keyword in front of it to make that clear. If we want to enforce that the only non-private members in the conformance should be members that actually go toward implementing the conformance, then we should just have the above generate a compiler error, with the fix-it being to add ‘private’ to the declaration.</div><div><br class=""></div><div>Massive +1 otherwise.</div><div><br class=""></div><div>Charles</div><div><br class=""></div></body></html>