4
4
#include " swift/Basic/LangOptions.h"
5
5
#include " swift/Basic/SourceManager.h"
6
6
#include " swift/Parse/Lexer.h"
7
+ #include " swift/Syntax/Trivia.h"
7
8
#include " swift/Subsystems.h"
8
9
#include " llvm/Support/MemoryBuffer.h"
9
10
#include " llvm/Support/Process.h"
18
19
19
20
using namespace swift ;
20
21
using namespace llvm ;
22
+ using syntax::TriviaKind;
21
23
22
24
// The test fixture.
23
25
class LexerTest : public ::testing::Test {
@@ -283,24 +285,24 @@ TEST_F(LexerTest, BOMNoCommentNoTrivia) {
283
285
TriviaRetentionMode::WithoutTrivia);
284
286
285
287
Token Tok;
286
- syntax::Trivia LeadingTrivia, TrailingTrivia;
288
+ ParsedTrivia LeadingTrivia, TrailingTrivia;
287
289
288
290
L.lex (Tok, LeadingTrivia, TrailingTrivia);
289
291
ASSERT_EQ (tok::identifier, Tok.getKind ());
290
292
ASSERT_EQ (" aaa" , Tok.getText ());
291
293
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getLoc ());
292
294
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getCommentRange ().getStart ());
293
295
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
294
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
295
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
296
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
297
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
296
298
297
299
L.lex (Tok, LeadingTrivia, TrailingTrivia);
298
300
ASSERT_EQ (tok::eof, Tok.getKind ());
299
301
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getLoc ());
300
302
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getCommentRange ().getStart ());
301
303
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
302
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
303
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
304
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
305
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
304
306
}
305
307
306
308
TEST_F (LexerTest, BOMTokenCommentNoTrivia) {
@@ -315,51 +317,51 @@ TEST_F(LexerTest, BOMTokenCommentNoTrivia) {
315
317
TriviaRetentionMode::WithoutTrivia);
316
318
317
319
Token Tok;
318
- syntax::Trivia LeadingTrivia, TrailingTrivia;
320
+ ParsedTrivia LeadingTrivia, TrailingTrivia;
319
321
320
322
L.lex (Tok, LeadingTrivia, TrailingTrivia);
321
323
ASSERT_EQ (tok::comment, Tok.getKind ());
322
324
ASSERT_EQ (" // comment\n " , Tok.getText ());
323
325
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 3 ), Tok.getLoc ());
324
326
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 3 ), Tok.getCommentRange ().getStart ());
325
327
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
326
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
327
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
328
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
329
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
328
330
329
331
L.lex (Tok, LeadingTrivia, TrailingTrivia);
330
332
ASSERT_EQ (tok::identifier, Tok.getKind ());
331
333
ASSERT_EQ (" aaa" , Tok.getText ());
332
334
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getLoc ());
333
335
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getCommentRange ().getStart ());
334
336
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
335
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
336
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
337
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
338
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
337
339
338
340
L.lex (Tok, LeadingTrivia, TrailingTrivia);
339
341
ASSERT_EQ (tok::comment, Tok.getKind ());
340
342
ASSERT_EQ (" //xx \n " , Tok.getText ());
341
343
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 18 ), Tok.getLoc ());
342
344
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 18 ), Tok.getCommentRange ().getStart ());
343
345
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
344
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
345
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
346
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
347
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
346
348
347
349
L.lex (Tok, LeadingTrivia, TrailingTrivia);
348
350
ASSERT_EQ (tok::comment, Tok.getKind ());
349
351
ASSERT_EQ (" /* x */" , Tok.getText ());
350
352
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 24 ), Tok.getLoc ());
351
353
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 24 ), Tok.getCommentRange ().getStart ());
352
354
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
353
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
354
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
355
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
356
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
355
357
356
358
L.lex (Tok, LeadingTrivia, TrailingTrivia);
357
359
ASSERT_EQ (tok::eof, Tok.getKind ());
358
360
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getLoc ());
359
361
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getCommentRange ().getStart ());
360
362
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
361
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
362
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
363
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
364
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
363
365
}
364
366
365
367
TEST_F (LexerTest, BOMAttachCommentNoTrivia) {
@@ -374,24 +376,24 @@ TEST_F(LexerTest, BOMAttachCommentNoTrivia) {
374
376
TriviaRetentionMode::WithoutTrivia);
375
377
376
378
Token Tok;
377
- syntax::Trivia LeadingTrivia, TrailingTrivia;
379
+ ParsedTrivia LeadingTrivia, TrailingTrivia;
378
380
379
381
L.lex (Tok, LeadingTrivia, TrailingTrivia);
380
382
ASSERT_EQ (tok::identifier, Tok.getKind ());
381
383
ASSERT_EQ (" aaa" , Tok.getText ());
382
384
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getLoc ());
383
385
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 3 ), Tok.getCommentRange ().getStart ());
384
386
ASSERT_EQ (10u , Tok.getCommentRange ().getByteLength ());
385
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
386
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
387
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
388
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
387
389
388
390
L.lex (Tok, LeadingTrivia, TrailingTrivia);
389
391
ASSERT_EQ (tok::eof, Tok.getKind ());
390
392
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getLoc ());
391
393
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 18 ), Tok.getCommentRange ().getStart ());
392
394
ASSERT_EQ (13u , Tok.getCommentRange ().getByteLength ());
393
- ASSERT_EQ ((syntax::Trivia {{}}), LeadingTrivia);
394
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
395
+ ASSERT_EQ ((ParsedTrivia {{}}), LeadingTrivia);
396
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
395
397
}
396
398
397
399
TEST_F (LexerTest, BOMNoCommentTrivia) {
@@ -406,34 +408,34 @@ TEST_F(LexerTest, BOMNoCommentTrivia) {
406
408
TriviaRetentionMode::WithTrivia);
407
409
408
410
Token Tok;
409
- syntax::Trivia LeadingTrivia, TrailingTrivia;
411
+ ParsedTrivia LeadingTrivia, TrailingTrivia;
410
412
411
413
L.lex (Tok, LeadingTrivia, TrailingTrivia);
412
414
ASSERT_EQ (tok::identifier, Tok.getKind ());
413
415
ASSERT_EQ (" aaa" , Tok.getText ());
414
416
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getLoc ());
415
417
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getCommentRange ().getStart ());
416
418
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
417
- ASSERT_EQ ((syntax::Trivia {{
418
- syntax::TriviaPiece::garbageText (" \xEF\xBB\xBF " ),
419
- syntax::TriviaPiece::lineComment (" // comment" ),
420
- syntax::TriviaPiece::newlines ( 1 )
419
+ ASSERT_EQ ((ParsedTrivia {{
420
+ ParsedTriviaPiece (TriviaKind::GarbageText, strlen (" \xEF\xBB\xBF " ) ),
421
+ ParsedTriviaPiece (TriviaKind::LineComment, strlen (" // comment" ) ),
422
+ ParsedTriviaPiece (TriviaKind::Newline, 1 )
421
423
}}), LeadingTrivia);
422
- ASSERT_EQ ((syntax::Trivia {{
423
- syntax::TriviaPiece::spaces ( 1 )
424
+ ASSERT_EQ ((ParsedTrivia {{
425
+ ParsedTriviaPiece (TriviaKind::Space, 1 )
424
426
}}), TrailingTrivia);
425
427
426
428
L.lex (Tok, LeadingTrivia, TrailingTrivia);
427
429
ASSERT_EQ (tok::eof, Tok.getKind ());
428
430
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getLoc ());
429
431
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getCommentRange ().getStart ());
430
432
ASSERT_EQ (0u , Tok.getCommentRange ().getByteLength ());
431
- ASSERT_EQ ((syntax::Trivia {{
432
- syntax::TriviaPiece::lineComment (" //xx " ),
433
- syntax::TriviaPiece::newlines ( 1 ),
434
- syntax::TriviaPiece::blockComment (" /* x */" )
433
+ ASSERT_EQ ((ParsedTrivia {{
434
+ ParsedTriviaPiece (TriviaKind::LineComment, strlen (" //xx " ) ),
435
+ ParsedTriviaPiece (TriviaKind::Newline, 1 ),
436
+ ParsedTriviaPiece (TriviaKind::BlockComment, strlen (" /* x */" ) )
435
437
}}), LeadingTrivia);
436
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
438
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
437
439
}
438
440
439
441
TEST_F (LexerTest, BOMAttachCommentTrivia) {
@@ -448,34 +450,34 @@ TEST_F(LexerTest, BOMAttachCommentTrivia) {
448
450
TriviaRetentionMode::WithTrivia);
449
451
450
452
Token Tok;
451
- syntax::Trivia LeadingTrivia, TrailingTrivia;
453
+ ParsedTrivia LeadingTrivia, TrailingTrivia;
452
454
453
455
L.lex (Tok, LeadingTrivia, TrailingTrivia);
454
456
ASSERT_EQ (tok::identifier, Tok.getKind ());
455
457
ASSERT_EQ (" aaa" , Tok.getText ());
456
458
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 14 ), Tok.getLoc ());
457
459
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 3 ), Tok.getCommentRange ().getStart ());
458
460
ASSERT_EQ (10u , Tok.getCommentRange ().getByteLength ());
459
- ASSERT_EQ ((syntax::Trivia {{
460
- syntax::TriviaPiece::garbageText (" \xEF\xBB\xBF " ),
461
- syntax::TriviaPiece::lineComment (" // comment" ),
462
- syntax::TriviaPiece::newlines ( 1 )
461
+ ASSERT_EQ ((ParsedTrivia {{
462
+ ParsedTriviaPiece (TriviaKind::GarbageText, strlen (" \xEF\xBB\xBF " ) ),
463
+ ParsedTriviaPiece (TriviaKind::LineComment, strlen (" // comment" ) ),
464
+ ParsedTriviaPiece (TriviaKind::Newline, 1 )
463
465
}}), LeadingTrivia);
464
- ASSERT_EQ ((syntax::Trivia {{
465
- syntax::TriviaPiece::spaces ( 1 )
466
+ ASSERT_EQ ((ParsedTrivia {{
467
+ ParsedTriviaPiece (TriviaKind::Space, 1 )
466
468
}}), TrailingTrivia);
467
469
468
470
L.lex (Tok, LeadingTrivia, TrailingTrivia);
469
471
ASSERT_EQ (tok::eof, Tok.getKind ());
470
472
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 31 ), Tok.getLoc ());
471
473
ASSERT_EQ (SourceMgr.getLocForOffset (BufferID, 18 ), Tok.getCommentRange ().getStart ());
472
474
ASSERT_EQ (13u , Tok.getCommentRange ().getByteLength ());
473
- ASSERT_EQ ((syntax::Trivia {{
474
- syntax::TriviaPiece::lineComment (" //xx " ),
475
- syntax::TriviaPiece::newlines ( 1 ),
476
- syntax::TriviaPiece::blockComment (" /* x */" )
475
+ ASSERT_EQ ((ParsedTrivia {{
476
+ ParsedTriviaPiece (TriviaKind::LineComment, strlen (" //xx " ) ),
477
+ ParsedTriviaPiece (TriviaKind::Newline, 1 ),
478
+ ParsedTriviaPiece (TriviaKind::BlockComment, strlen (" /* x */" ) )
477
479
}}), LeadingTrivia);
478
- ASSERT_EQ ((syntax::Trivia {{}}), TrailingTrivia);
480
+ ASSERT_EQ ((ParsedTrivia {{}}), TrailingTrivia);
479
481
}
480
482
481
483
TEST_F (LexerTest, RestoreBasic) {
0 commit comments