Commits

Devin Coughlin committed b727b6d932e
Treat potentially unavailable global variable references as optional. This patch adds the ability (-enable-experimental-unavailable-as-optional) to treat potentially unavailable declarations as if they had optional types. For the moment, this is only implemented for global variables. The high-level approach is to (1) record the potential unavailability of a declaration reference in the overload choice during constraint generation; (2) treat the declaration as if it had an optional type during overload resolution (this is similar to how optional protocol members are treated); and (3) add an implicit conversion (UnavailableToOptionalExpr) during constraint application to represent the run-time availability check and optional injection. This patch does not implement SILGen for UnavailableToOptionalExpr. Swift SVN r22245