On Apr 16, 2019, at 4:03 PM, Liam Miller-Cushon <cus...@google.com> wrote: > > One disadvantage is the handling of the trailing newline. Requiring the > closing delimiter to be on its own line means there's always a trailing > newline in source. If we want to allow expressing multi-line strings that > don't have a trailing newline we could automatically trim one trailing > newline character, but then it would be necessary to leave an extra blank > line after multi-line strings in cases where a trailing newline is actually > desired.
I'm not sure it would be nicer, but here's a move to ponder: If the trailing newline is always stripped, allow an explicit \n (or maybe any number of them?) before the close-quote to opt out of the stripping. String message = """ hello world \n"""; Actual: hello\n world\n It seems to me, though, that stripping the last \n by default tends to create more surprising use cases. Retaining a final \n is usually less surprising, AFAICS. This puts the burden back on the uncommon stripping case. We might want a way to say "delete that last newline, even though I used it to make my pretty box". One way to do this would be a new escape sequence for ML strings only: String message = """ hello world\ """; Actual: hello\n world But if we don't care so much about brace-style layout, this works just as well, without a new escape sequence: String message = """ hello world"""; Actual: hello\n world