[swift-evolution] [Review] SE-0168: Multi-Line String Literals
Adrian Zubarev
adrian.zubarev at devandartist.com
Fri Apr 14 12:27:37 CDT 2017
Hi Thorsten,
I think we’ve found a lightweight alternative solution for that problem. If you add trailing whitespace characters but no backslash the compiler will emit a warning. Depending which line produced the warning, a Fix-it will either add \n\ or a single \ after the last whitespace character in that line. This will kind of force the developer to be precise about whitespaces.
You’ll have two options:
Remove unneeded whitespaces.
Add \n\ or \ for precision.
--
Adrian Zubarev
Sent with Airmail
Am 14. April 2017 um 19:19:47, Thorsten Seitz (tseitz42 at icloud.com) schrieb:
I agree with Adrian that trailing whitespace which is not followed by a backslash should be stripped, because it is not visible otherwise (unlike in a normal string).
-Thorsten
Am 13.04.2017 um 15:32 schrieb Adrian Zubarev via swift-evolution <swift-evolution at swift.org>:
Theoretically that would be enough and lightweight solution to that problem, I could live with that. Optimally stripping them automatically would be ideal, however I cannot tell how complicated this might be to implement.
A warning that will popup when you included any trailing spaces in a ‘content line’ without the explicit backslash could also provide a fix-it to the user to remove these spaces. However if you can emit that warning and calculate the spaces to remove, than the compiler should be able to swallow these characters by default right?
let s1 = """↵
····content·····⇥···⇥··⇥····↵
····""""
s1 == "content" // => true
The warning itself could bite with Xcode, it depends on who’s faster to precede that problem. Either Xcode will strip them for you (but designing the literal we should not rely on that), or the compiler will emit the warning followed by Xcode which will strip them, which removes the warning. This would be kind of silly right?
--
Adrian Zubarev
Sent with Airmail
Am 13. April 2017 um 15:10:36, John Holdsworth (mac at johnholdsworth.com) schrieb:
Hi Adrian,
Would you settle for a warning for trailing whitespace in a literal?
Removing it is a bit fiddly to implement and I’m not sure it’s a feature.
John
On 13 Apr 2017, at 14:05, Adrian Zubarev via swift-evolution <swift-evolution at swift.org> wrote:
That would be so wrong, because it’s not obvious to anyone how long your string will be.
"""
foo
"""
I could tell you, that the string from above could have 10k characters, even if you wouldn’t believe me, as it was proposed (and included in yesterday’s toolchain) my claim can be true.
The trailing spaces needs to be stripped by the algorithm unless there is an explicit precision annotation with a backslash!
"""
foo \
"""
That example definitely won’t have 10k characters.
--
Adrian Zubarev
Sent with Airmail
Am 13. April 2017 um 14:35:59, Ricardo Parada (rparada at mac.com) schrieb:
Trailing whitespace
You also propose to remove trailing white space in each line unless the whitespace is followed by a backslash. For example:
let str_2 = """↵
foo··↵
"""
The two trailing whitespaces after foo would get removed according to what you are proposing. I don't like this rule. I think we are better off with leaving it alone and to the tools as Brent suggested.
_______________________________________________
swift-evolution mailing list
swift-evolution at swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution at swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170414/d67bbf50/attachment.html>
More information about the swift-evolution
mailing list