<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Mar 17, 2017, at 2:53 PM, Michael LeHew &lt;<a href="mailto:lehewjr@apple.com" class="">lehewjr@apple.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Mar 17, 2017, at 2:21 PM, BJ Homer &lt;<a href="mailto:bjhomer@gmail.com" class="">bjhomer@gmail.com</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">This looks great!<div class=""><br class=""></div><div class="">What happens in the case when there is a static property by the same name as an instance property? e.g.</div><div class=""><br class=""></div><div class=""><div class=""><font face="Menlo" class="">struct Foo {</font></div><div class=""><font face="Menlo" class="">&nbsp; &nbsp; static var bar: Bar</font></div><div class=""><font face="Menlo" class="">&nbsp; &nbsp; var bar: Bar</font></div><div class=""><font face="Menlo" class="">}</font></div></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">Foo.bar // What is this?</font></div><div class=""><br class=""></div><div class="">Is it still possible to reference both the static property and a KeyPath to the instance method?&nbsp;</div></div></div></blockquote><div class=""><br class=""></div>This is essentially the same question that I arrived at in my reply to Vladimir. &nbsp;I think Joe might be best able to answer here.</div></div></div></blockquote><br class=""></div><div>We already encounter this situation with static vs instance methods, since `Foo.bar` can refer to either a static method `bar` or an unbound instance method `bar`. We use type context to disambiguate, favoring the static member if context doesn't help:</div><div><br class=""></div><div><div>struct X {</div><div>&nbsp; static func foo() {}</div><div>&nbsp; func foo() {}</div><div>}</div><div><br class=""></div><div>let foo1 = X.foo // Defaults to static member</div><div>let foo2: () -&gt; () = X.foo // Picks static member by type context</div><div>let foo3: (X) -&gt; () -&gt; () = X.foo // Picks instance member by type context</div><div><br class=""></div><div>-Joe</div></div><br class=""></body></html>