Commits

Devin Coughlin committed 1867b1418bd
Support escape sequences in @available() messages. Allow API providers to use escaped characters in the messages of @available() attributes. For example, for a reference to a declaration annotated with: @available(*, unavailable, message="use print(\"\")") public func println() { ... } the message displayed to the user will be: 'println() is unavailable: use print("")'. This also supports unicode escapes (e.g. \u{1F43C}). A complication is that AvailableAttrs imported from clang already have their messages unescaped, so this patch keeps track of whether an availability attribute came from clang and, if so, does not unescape the message again when emitting the diagnostic. We could avoid this extra book-keeping by immediately unescaping Swift messages during parsing, keeping them in an unescaped canonical form, and then escaping them in ASTPrinter when we print the attributes. rdar://problem/20985357 tracks keeping AvailableAttrs messages in a canonical form. rdar://problem/20789407 Swift SVN r28658