func perhapsConfusing() {
let s =
"Since this function compiles fine. One might "
"think that string literals in Swift can be "
"written like this. But that is not the case. "
"Only the first string literal will be printed."
"The rest (including eg this) will be silently "
"ignored."
12.34 // As will this.
12 + 4 // And this.
123 == 456 // And this.
print(s) // Prints: "Since this function compiles fine. One might "
}

Besides being possibly surprising for newcomers (who may assume string
literals split across several lines as above will be joined), there are
some related inconsistencies in whether warnings are generated for unused
results or not, for example
123 == 456 // Unused result is silently ignored, while
1.2 == 3.4 // produces a warning: Result of call to '==' is unused.
(The following bug report is about unused results, but it doesn't mention
the IMHO similar unused-literals-case: https://bugs.swift.org/browse/SR-245
)

So my question is:
Should/could there be a warning for unused literals?

func perhapsConfusing() {
let s =
"Since this function compiles fine. One might "
"think that string literals in Swift can be "
"written like this. But that is not the case. "
"Only the first string literal will be printed."
"The rest (including eg this) will be silently "
"ignored."
12.34 // As will this.
12 + 4 // And this.
123 == 456 // And this.
print(s) // Prints: "Since this function compiles fine. One might "
}

Besides being possibly surprising for newcomers (who may assume string literals split across several lines as above will be joined), there are some related inconsistencies in whether warnings are generated for unused results or not, for example
123 == 456 // Unused result is silently ignored, while
1.2 == 3.4 // produces a warning: Result of call to '==' is unused.
(The following bug report is about unused results, but it doesn't mention the IMHO similar unused-literals-case: https://bugs.swift.org/browse/SR-245 )

So my question is:
Should/could there be a warning for unused literals?

Yep. I'd just consider this a bug, though someone from the standard library would have to confirm that they don't consider it an API change. Feel free to tack it on to SR-245; we might as well do them all at the same time.

func perhapsConfusing() {
let s =
"Since this function compiles fine. One might "
"think that string literals in Swift can be "
"written like this. But that is not the case. "
"Only the first string literal will be printed."
"The rest (including eg this) will be silently "
"ignored."
12.34 // As will this.
12 + 4 // And this.
123 == 456 // And this.
print(s) // Prints: "Since this function compiles fine. One might "
}

Besides being possibly surprising for newcomers (who may assume string literals split across several lines as above will be joined), there are some related inconsistencies in whether warnings are generated for unused results or not, for example
123 == 456 // Unused result is silently ignored, while
1.2 == 3.4 // produces a warning: Result of call to '==' is unused.
(The following bug report is about unused results, but it doesn't mention the IMHO similar unused-literals-case: https://bugs.swift.org/browse/SR-245 )

So my question is:
Should/could there be a warning for unused literals?

Yep. I'd just consider this a bug, though someone from the standard
library would have to confirm that they don't consider it an API change.
Feel free to tack it on to SR-245; we might as well do them all at the same
time.

func perhapsConfusing() {
let s =
"Since this function compiles fine. One might "
"think that string literals in Swift can be "
"written like this. But that is not the case. "
"Only the first string literal will be printed."
"The rest (including eg this) will be silently "
"ignored."
12.34 // As will this.
12 + 4 // And this.
123 == 456 // And this.
print(s) // Prints: "Since this function compiles fine. One might "
}

Besides being possibly surprising for newcomers (who may assume string
literals split across several lines as above will be joined), there are
some related inconsistencies in whether warnings are generated for unused
results or not, for example
123 == 456 // Unused result is silently ignored, while
1.2 == 3.4 // produces a warning: Result of call to '==' is unused.
(The following bug report is about unused results, but it doesn't mention
the IMHO similar unused-literals-case:https://bugs.swift.org/browse/SR-245 )

So my question is:
Should/could there be a warning for unused literals?

Yep. I'd just consider this a bug, though someone from the standard library would have to confirm that they don't consider it an API change. Feel free to tack it on to SR-245; we might as well do them all at the same time.

Jordan

I think that there should be a warning for unused literals. I can't think of any case where you would like to have a literal just hanging there in Swift.

Félix

I.... do this all the time in Playgrounds, mainly to see if a conditional branch has been executed as I'm testing or building:

But a warning is a good idea otherwise, and I can figure something else out.

func perhapsConfusing() {
let s =
"Since this function compiles fine. One might "
"think that string literals in Swift can be "
"written like this. But that is not the case. "
"Only the first string literal will be printed."
"The rest (including eg this) will be silently "
"ignored."
12.34 // As will this.
12 + 4 // And this.
123 == 456 // And this.
print(s) // Prints: "Since this function compiles fine. One might "
}

Besides being possibly surprising for newcomers (who may assume string literals split across several lines as above will be joined), there are some related inconsistencies in whether warnings are generated for unused results or not, for example
123 == 456 // Unused result is silently ignored, while
1.2 == 3.4 // produces a warning: Result of call to '==' is unused.
(The following bug report is about unused results, but it doesn't mention the IMHO similar unused-literals-case: https://bugs.swift.org/browse/SR-245 )

So my question is:
Should/could there be a warning for unused literals?

Yep. I'd just consider this a bug, though someone from the standard library would have to confirm that they don't consider it an API change. Feel free to tack it on to SR-245; we might as well do them all at the same time.