Thank you Chris and everyone who gave their input.
In my original post I include "having to do a migration" as a con in option 1. Luckily some of you pointed out that it's not necessary if self
is to be an identifier.
I've made a small change to the parser that enables option 1 and keeps the rest of the compiler behavior for now: [Parse] Enable self rebinding (to self) by dduan · Pull Request #15306 · apple/swift · GitHub
With this patch, self
is not completely a normal identifier yet in the sense that the parser would still consider it a keyword sometimes. But it gets us closer.