[clang] [clang-format]: Annotate colons found in inline assembly (PR #92617)
Gedare Bloom via cfe-commits
cfe-commits at lists.llvm.org
Sat May 25 16:08:40 PDT 2024
================
@@ -1488,12 +1488,81 @@ TEST_F(TokenAnnotatorTest, RequiresDoesNotChangeParsingOfTheRest) {
TEST_F(TokenAnnotatorTest, UnderstandsAsm) {
auto Tokens = annotate("__asm{\n"
- "a:\n"
- "};");
- ASSERT_EQ(Tokens.size(), 7u) << Tokens;
+ "\"a\":\n"
+ ": x\n"
+ ":};");
+ ASSERT_EQ(Tokens.size(), 10u) << Tokens;
EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
EXPECT_TOKEN(Tokens[1], tok::l_brace, TT_InlineASMBrace);
- EXPECT_TOKEN(Tokens[4], tok::r_brace, TT_InlineASMBrace);
+ EXPECT_TOKEN(Tokens[3], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[4], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[6], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[7], tok::r_brace, TT_InlineASMBrace);
+
+ Tokens = annotate("__asm(\n"
+ "\"a\":\n"
+ ": x\n"
+ ":);");
+ ASSERT_EQ(Tokens.size(), 10u) << Tokens;
+ EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
+ EXPECT_TOKEN(Tokens[3], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[4], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[6], tok::colon, TT_InlineASMColon);
+
+ Tokens = annotate("asm volatile (\n"
+ "\"a_label:\"\n"
+ ":\n"
+ ": x\n"
+ ":);");
+ ASSERT_EQ(Tokens.size(), 11u) << Tokens;
+ EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
+ EXPECT_TOKEN(Tokens[4], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[5], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[7], tok::colon, TT_InlineASMColon);
+
+ Tokens = annotate("__asm__(\n"
+ "\"a_label:\"\n"
+ ": x\n"
+ ":\n"
+ ": y);");
+ ASSERT_EQ(Tokens.size(), 11u) << Tokens;
+ EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
+ EXPECT_TOKEN(Tokens[3], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[5], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[6], tok::colon, TT_InlineASMColon);
+
+ Tokens = annotate("__asm volatile (\n"
+ "\"a_label:\"\n"
+ "\"a b c(%%x)\"\n"
+ ":\n"
+ ": x\n"
+ ":);");
+ ASSERT_EQ(Tokens.size(), 12u) << Tokens;
+ EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
+ EXPECT_TOKEN(Tokens[5], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[6], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[8], tok::colon, TT_InlineASMColon);
+
+ Tokens = annotate("asm(\n"
+ "\"insn\"\n"
+ ": \"=r\" (var1), \"=&r\" (value)\n"
+ ":\n"
+ ": \"memory\");");
+ ASSERT_EQ(Tokens.size(), 19u) << Tokens;
+ EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
+ EXPECT_TOKEN(Tokens[3], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[13], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[14], tok::colon, TT_InlineASMColon);
+
+ Tokens = annotate("__asm__ volatile (\n"
+ "\"ldr r1, [r0, %%[sym]]\"\n"
+ ":\n"
+ ": [sym] \"J\" (aaaaa(aaaa, aaaa))\n"
+ ");");
+ ASSERT_EQ(Tokens.size(), 21u) << Tokens;
+ EXPECT_TOKEN(Tokens[0], tok::kw_asm, TT_Unknown);
+ EXPECT_TOKEN(Tokens[4], tok::colon, TT_InlineASMColon);
+ EXPECT_TOKEN(Tokens[5], tok::colon, TT_InlineASMColon);
}
----------------
gedare wrote:
Nice. I shouldn't review comments on my phone.
https://github.com/llvm/llvm-project/pull/92617
More information about the cfe-commits
mailing list