<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 <<a href="mailto:lehewjr@apple.com" class="">lehewjr@apple.com</a>> 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 <<a href="mailto:bjhomer@gmail.com" class="">bjhomer@gmail.com</a>> 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=""> static var bar: Bar</font></div><div class=""><font face="Menlo" class=""> 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? </div></div></div></blockquote><div class=""><br class=""></div>This is essentially the same question that I arrived at in my reply to Vladimir. 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> static func foo() {}</div><div> func foo() {}</div><div>}</div><div><br class=""></div><div>let foo1 = X.foo // Defaults to static member</div><div>let foo2: () -> () = X.foo // Picks static member by type context</div><div>let foo3: (X) -> () -> () = X.foo // Picks instance member by type context</div><div><br class=""></div><div>-Joe</div></div><br class=""></body></html>