@@ -1496,12 +1496,82 @@ TEST_F(TokenAnnotatorTest, RequiresDoesNotChangeParsingOfTheRest) {
1496
1496
1497
1497
TEST_F (TokenAnnotatorTest, UnderstandsAsm) {
1498
1498
auto Tokens = annotate (" __asm{\n "
1499
- " a:\n "
1500
- " };" );
1501
- ASSERT_EQ (Tokens.size (), 7u ) << Tokens;
1499
+ " \" a\" :\n "
1500
+ " : x\n "
1501
+ " :};" );
1502
+ ASSERT_EQ (Tokens.size (), 10u ) << Tokens;
1502
1503
EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1503
1504
EXPECT_TOKEN (Tokens[1 ], tok::l_brace, TT_InlineASMBrace);
1504
- EXPECT_TOKEN (Tokens[4 ], tok::r_brace, TT_InlineASMBrace);
1505
+ EXPECT_TOKEN (Tokens[3 ], tok::colon, TT_InlineASMColon);
1506
+ EXPECT_TOKEN (Tokens[4 ], tok::colon, TT_InlineASMColon);
1507
+ EXPECT_TOKEN (Tokens[6 ], tok::colon, TT_InlineASMColon);
1508
+ EXPECT_TOKEN (Tokens[7 ], tok::r_brace, TT_InlineASMBrace);
1509
+
1510
+ Tokens = annotate (" __asm(\n "
1511
+ " \" a\" :\n "
1512
+ " : x\n "
1513
+ " :);" );
1514
+ ASSERT_EQ (Tokens.size (), 10u ) << Tokens;
1515
+ EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1516
+ EXPECT_TOKEN (Tokens[3 ], tok::colon, TT_InlineASMColon);
1517
+ EXPECT_TOKEN (Tokens[4 ], tok::colon, TT_InlineASMColon);
1518
+ EXPECT_TOKEN (Tokens[6 ], tok::colon, TT_InlineASMColon);
1519
+
1520
+ Tokens = annotate (" asm volatile (\n "
1521
+ " \" a_label:\"\n "
1522
+ " :\n "
1523
+ " : x\n "
1524
+ " :);" );
1525
+ ASSERT_EQ (Tokens.size (), 11u ) << Tokens;
1526
+ EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1527
+ EXPECT_TOKEN (Tokens[4 ], tok::colon, TT_InlineASMColon);
1528
+ EXPECT_TOKEN (Tokens[5 ], tok::colon, TT_InlineASMColon);
1529
+ EXPECT_TOKEN (Tokens[7 ], tok::colon, TT_InlineASMColon);
1530
+
1531
+ Tokens = annotate (" __asm__(\n "
1532
+ " \" a_label:\"\n "
1533
+ " : x\n "
1534
+ " :\n "
1535
+ " : y);" );
1536
+ ASSERT_EQ (Tokens.size (), 11u ) << Tokens;
1537
+ EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1538
+ EXPECT_TOKEN (Tokens[3 ], tok::colon, TT_InlineASMColon);
1539
+ EXPECT_TOKEN (Tokens[5 ], tok::colon, TT_InlineASMColon);
1540
+ EXPECT_TOKEN (Tokens[6 ], tok::colon, TT_InlineASMColon);
1541
+
1542
+ Tokens = annotate (" __asm volatile (\n "
1543
+ " \" a_label:\"\n "
1544
+ " \" a b c(%%x)\"\n "
1545
+ " :\n "
1546
+ " : x\n "
1547
+ " :);" );
1548
+ ASSERT_EQ (Tokens.size (), 12u ) << Tokens;
1549
+ EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1550
+ EXPECT_TOKEN (Tokens[5 ], tok::colon, TT_InlineASMColon);
1551
+ EXPECT_TOKEN (Tokens[6 ], tok::colon, TT_InlineASMColon);
1552
+ EXPECT_TOKEN (Tokens[8 ], tok::colon, TT_InlineASMColon);
1553
+
1554
+ Tokens = annotate (" asm(\n "
1555
+ " \" insn\"\n "
1556
+ " : \" =r\" (var1), \" =&r\" (value)\n "
1557
+ " :\n "
1558
+ " : \" memory\" );" );
1559
+ ASSERT_EQ (Tokens.size (), 19u ) << Tokens;
1560
+ EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1561
+ EXPECT_TOKEN (Tokens[3 ], tok::colon, TT_InlineASMColon);
1562
+ EXPECT_TOKEN (Tokens[13 ], tok::colon, TT_InlineASMColon);
1563
+ EXPECT_TOKEN (Tokens[14 ], tok::colon, TT_InlineASMColon);
1564
+
1565
+ Tokens = annotate (" __asm__ volatile (\n "
1566
+ " \" ldr r1, [r0, %%[sym]]\"\n "
1567
+ " :\n "
1568
+ " : [sym] \" J\" (aaaaa(aaaa, aaaa))\n "
1569
+ " );" );
1570
+ ASSERT_EQ (Tokens.size (), 21u ) << Tokens;
1571
+ EXPECT_TOKEN (Tokens[0 ], tok::kw_asm, TT_Unknown);
1572
+ EXPECT_TOKEN (Tokens[4 ], tok::colon, TT_InlineASMColon);
1573
+ EXPECT_TOKEN (Tokens[5 ], tok::colon, TT_InlineASMColon);
1574
+ EXPECT_TOKEN (Tokens[6 ], tok::l_square, TT_InlineASMSymbolicNameLSquare);
1505
1575
}
1506
1576
1507
1577
TEST_F (TokenAnnotatorTest, UnderstandsObjCBlock) {
0 commit comments