From: Daniel Jasper Date: Mon, 12 Jan 2015 10:14:56 +0000 (+0000) Subject: clang-format: Fix formatting of inline asm. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cd4fa1779103c10a487f2a9b7fe778b79ab299b4;p=clang clang-format: Fix formatting of inline asm. Specifically, adjust the leading "__asm {" and trailing "}" while still leaving the assembly inside it alone. This fixes llvm.org/PR22190. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@225623 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index 02d49a0e1e..01c8acf0e6 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -660,15 +660,15 @@ void UnwrappedLineParser::parseStructuralElement() { } break; case tok::kw_asm: - FormatTok->Finalized = true; nextToken(); if (FormatTok->is(tok::l_brace)) { + nextToken(); while (FormatTok && FormatTok->isNot(tok::eof)) { - FormatTok->Finalized = true; if (FormatTok->is(tok::r_brace)) { nextToken(); break; } + FormatTok->Finalized = true; nextToken(); } } diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 3b3f5fb74c..a49a35c1de 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -2191,11 +2191,11 @@ TEST_F(FormatTest, FormatsInlineASM) { " : \"a\"(value));"); EXPECT_EQ( "void NS_InvokeByIndex(void *that, unsigned int methodIndex) {\n" - " __asm {\n" + " __asm {\n" " mov edx,[that] // vtable in edx\n" " mov eax,methodIndex\n" " call [edx][eax*4] // stdcall\n" - " }\n" + " }\n" "}", format("void NS_InvokeByIndex(void *that, unsigned int methodIndex) {\n" " __asm {\n" @@ -2204,6 +2204,10 @@ TEST_F(FormatTest, FormatsInlineASM) { " call [edx][eax*4] // stdcall\n" " }\n" "}")); + verifyFormat("void function() {\n" + " // comment\n" + " asm(\"\");\n" + "}"); } TEST_F(FormatTest, FormatTryCatch) {