Commits

Doug Gregor committed 595fb8c94f8
Introduce lvalue open-existential expressions and start using them. Place OpenExistentialExprs for references to lvalue subscripts or properties (in protocol extensions) via existentials just outside of the member or subscript reference, rather than far outside the expression. This gives us a tighter bound on the open-existential expressions without introducing the post-pass I was threatening. OpenExistentialExprs just outside of lvalue member/subscript are themselves lvalues. Resurrect John's OpenOpaqueExistentialComponent to handle the opening of a (materialized) existential lvalues as an lvalue path component. This has the nice effect of codifying the formal access rules for opened existentials as well as handling inout on opened existentials appropriately. Big thanks to John for talking through the model with me and leaving dead code around for me to use. Swift SVN r27105