[swift-evolution] multi-line string literals

David Owens II david at owensd.io
Fri Dec 11 10:52:37 CST 2015


I really don’t like the left-edge being in the zero column as it is completely inconsistent with the formatting of the rest of the language.

class CommandLineTool {
    func showHelp() {
        let text =
            """ 
            OVERVIEW: Swift compiler

            USAGE: swiftc [options] <inputs>

            MODES:
              -dump-ast        Parse and type-check input file(s) and dump AST(s)
              -dump-parse      Parse input file(s) and dump AST(s)
              -dump-type-refinement-contexts
                               Type-check input file(s) and dump type refinement contexts(s)
              -emit-assembly   Emit assembly file(s) (-S)
              -emit-bc         Emit LLVM BC file(s)

            ...

            """

         print(text)
     }
}

What you’re suggesting is that the above code should be this:

class CommandLineTool {
    func showHelp() {
        let text = """ 
OVERVIEW: Swift compiler

USAGE: swiftc [options] <inputs>

MODES:
  -dump-ast        Parse and type-check input file(s) and dump AST(s)
  -dump-parse      Parse input file(s) and dump AST(s)
  -dump-type-refinement-contexts
                   Type-check input file(s) and dump type refinement contexts(s)
  -emit-assembly   Emit assembly file(s) (-S)
  -emit-bc         Emit LLVM BC file(s)

...

"""

         print(text)
     }
}

That’s a compromise I’d rather not have to see in my code.

Another use case for this is for the content of test cases. Having many of these string literals within that file that are all left-edge aligned reduces the readability of the code.

-David

> On Dec 11, 2015, at 4:20 AM, Marc Knaup <marc at knaup.koeln> wrote:
> 
> This example will break easily when tabs are used for indentation or when using refactoring tools to rename the variable:
> 
> let text = """ 
>            This is ok.
>     
>            """

All that suggests is this form should be preferred:

let text =
    """ 
    This is ok.
    """


I write a lot of my text these days in markdown, so I’m pretty heavily influenced by the simplicity of that.

-David

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


More information about the swift-evolution mailing list