@@ -170,4 +170,159 @@ final class StringLiteralTests: XCTestCase {
170
170
"""#
171
171
)
172
172
}
173
+
174
+ func testStringLiteralInExpr( ) {
175
+ let buildable = ExprSyntax (
176
+ #"""
177
+ "Validation failures: \(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))"
178
+ """#
179
+ )
180
+
181
+ AssertBuildResult (
182
+ buildable,
183
+ #"""
184
+ "Validation failures: \(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))"
185
+ """#
186
+ )
187
+ }
188
+
189
+ func testStringSegmentWithCode( ) {
190
+ let buildable = StringSegmentSyntax ( content: . stringSegment( #"\(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))"# ) )
191
+
192
+ AssertBuildResult (
193
+ buildable,
194
+ #"\(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))"#
195
+ )
196
+ }
197
+
198
+ func testStringLiteralSegmentWithCode( ) {
199
+ let buildable = StringLiteralSegmentsSyntax {
200
+ StringSegmentSyntax ( content: . stringSegment( #"Error validating child at index \(index) of \(nodeKind):"# ) , trailingTrivia: . newline)
201
+ StringSegmentSyntax ( content: . stringSegment( #"Node did not satisfy any node choice requirement."# ) , trailingTrivia: . newline)
202
+ StringSegmentSyntax ( content: . stringSegment( #"Validation failures:"# ) , trailingTrivia: . newline)
203
+ StringSegmentSyntax ( content: . stringSegment( #"\(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))"# ) )
204
+ }
205
+
206
+ AssertBuildResult (
207
+ buildable,
208
+ #"""
209
+ Error validating child at index \(index) of \(nodeKind):
210
+ Node did not satisfy any node choice requirement.
211
+ Validation failures:
212
+ \(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))
213
+ """#
214
+ )
215
+ }
216
+
217
+ func testMultiLineStringWithResultBuilder( ) {
218
+ let buildable = StringLiteralExprSyntax (
219
+ openQuote: . multilineStringQuoteToken( trailingTrivia: . newline) ,
220
+ segments: StringLiteralSegmentsSyntax {
221
+ StringSegmentSyntax ( content: . stringSegment( #"Error validating child at index \(index) of \(nodeKind):"# ) , trailingTrivia: . newline)
222
+ StringSegmentSyntax ( content: . stringSegment( #"Node did not satisfy any node choice requirement."# ) , trailingTrivia: . newline)
223
+ StringSegmentSyntax ( content: . stringSegment( #"Validation failures:"# ) , trailingTrivia: . newline)
224
+ ExpressionSegmentSyntax (
225
+ expressions: TupleExprElementListSyntax {
226
+ TupleExprElementSyntax ( expression: ExprSyntax ( #"nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))"# ) )
227
+ }
228
+ )
229
+ } ,
230
+ closeQuote: . multilineStringQuoteToken( leadingTrivia: . newline)
231
+ )
232
+
233
+ AssertBuildResult (
234
+ buildable,
235
+ #"""
236
+ """
237
+ Error validating child at index \(index) of \(nodeKind):
238
+ Node did not satisfy any node choice requirement.
239
+ Validation failures:
240
+ \(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))
241
+ """
242
+ """#
243
+ )
244
+ }
245
+
246
+ func testMultiStringLiteralInExpr( ) {
247
+ let buildable = ExprSyntax (
248
+ #"""
249
+ assertionFailure("""
250
+ Error validating child at index \(index) of \(nodeKind):
251
+ Node did not satisfy any node choice requirement.
252
+ Validation failures:
253
+ \(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))
254
+ """, file: file, line: line)
255
+ """#
256
+ )
257
+
258
+ AssertBuildResult (
259
+ buildable,
260
+ #"""
261
+ assertionFailure("""
262
+ Error validating child at index \(index) of \(nodeKind):
263
+ Node did not satisfy any node choice requirement.
264
+ Validation failures:
265
+ \(nonNilErrors.map({ "- \($0.description)" }).joined(separator: "\n"))
266
+ """, file: file, line: line)
267
+ """#
268
+ )
269
+ }
270
+
271
+ func testMultiStringLiteralInIfExpr( ) {
272
+ let buildable = ExprSyntax (
273
+ #"""
274
+ if true {
275
+ assertionFailure("""
276
+ Error validating child at index
277
+ Node did not satisfy any node choice requirement.
278
+ Validation failures:
279
+ """)
280
+ }
281
+ """#
282
+ )
283
+
284
+ AssertBuildResult (
285
+ buildable,
286
+ #"""
287
+ if true {
288
+ assertionFailure("""
289
+ Error validating child at index
290
+ Node did not satisfy any node choice requirement.
291
+ Validation failures:
292
+ """)
293
+ }
294
+ """#
295
+ )
296
+ }
297
+
298
+ func testMultiStringLiteralOnNewlineInIfExpr( ) {
299
+ let buildable = ExprSyntax (
300
+ #"""
301
+ if true {
302
+ assertionFailure(
303
+ """
304
+ Error validating child at index
305
+ Node did not satisfy any node choice requirement.
306
+ Validation failures:
307
+ """
308
+ )
309
+ }
310
+ """#
311
+ )
312
+
313
+ AssertBuildResult (
314
+ buildable,
315
+ #"""
316
+ if true {
317
+ assertionFailure(
318
+ """
319
+ Error validating child at index
320
+ Node did not satisfy any node choice requirement.
321
+ Validation failures:
322
+ """
323
+ )
324
+ }
325
+ """#
326
+ )
327
+ }
173
328
}
0 commit comments