[swift-evolution] [Review] SE-0182 - String Newline Escaping

Jordan Rose jordan_rose at apple.com
Fri Jul 14 12:17:50 CDT 2017



> On Jul 14, 2017, at 10:00, Alex Blewitt <alblue at apple.com> wrote:
> 
>> On 13 Jul 2017, at 23:14, David Hart via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>>> 
>>> On 14 Jul 2017, at 00:21, Jordan Rose <jordan_rose at apple.com <mailto:jordan_rose at apple.com>> wrote:
>>> 
>>> [Proposal: https://github.com/apple/swift-evolution/blob/master/proposals/0182-newline-escape-in-strings.md <https://github.com/apple/swift-evolution/blob/master/proposals/0182-newline-escape-in-strings.md>]
>>> 
>>> This is a tiny, tiny point amidst the broader discussions others are having, but
>>> 
>>>> 	• All whitespace characters between \ and the newline are disregarded.
>>> 
>>> Why? Why bother allowing whitespace characters between \ and the newline?
>> 
>> The reasoning is to be consistent with trailing whitespace in the rest of the code: to leave that to a linter instead. Or to see it differently, even with whitespace between \ and the newline, the programmer’s intent is still clear. Why generate an error?
> 
> For the same reason that code allows (e.g.) a comment at the end of the line; you wouldn't expect (newline continuation) (comment) to mean the same thing as if generic whitespace were added at the end. The convention in other languages is that \ immediately precedes the line feed to indicate a continuation, not that an orphan \ is valid on its own.
> 
> The reason that \(newline) is valid while \(otherchar)(newline) isn't is because \ immediately precedes another character that it is escaping, and it's possible that \(space) would have a meaning in the future, whereas \(newline) won't.

I agree with Alex on this, although I would be happy to make it a warning rather than an error so that it doesn't block compilation.

The point about comments is also significant: we previously said that comments should generally be treated like whitespace (SE-0037 <https://github.com/apple/swift-evolution/blob/master/proposals/0037-clarify-comments-and-operators.md>). This is a little different because it's still inside the string literal, but it's probably worth explicitly stating "we're still inside a string literal; you can't just put comments after the backslash".

Jordan

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170714/2629d1ad/attachment.html>


More information about the swift-evolution mailing list