From: Daniel Jasper Date: Thu, 9 Jan 2014 13:56:49 +0000 (+0000) Subject: clang-format: Understand #pragma mark X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e485bcba4865038013120ba55e683b69ecdbb373;p=clang clang-format: Understand #pragma mark Before: #pragma mark Any non - hyphenated or hyphenated string(including parentheses). After: #pragma mark Any non-hyphenated or hyphenated string (including parentheses). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@198870 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/TokenAnnotator.cpp b/lib/Format/TokenAnnotator.cpp index 98cc003342..1268be29b3 100644 --- a/lib/Format/TokenAnnotator.cpp +++ b/lib/Format/TokenAnnotator.cpp @@ -474,6 +474,18 @@ private: } } + void parsePragma() { + next(); // Consume "pragma". + if (CurrentToken && CurrentToken->TokenText == "mark") { + next(); // Consume "mark". + next(); // Consume first token (so we fix leading whitespace). + while (CurrentToken != NULL) { + CurrentToken->Type = TT_ImplicitStringLiteral; + next(); + } + } + } + void parsePreprocessorDirective() { next(); if (CurrentToken == NULL) @@ -495,6 +507,9 @@ private: case tok::pp_warning: parseWarningOrError(); break; + case tok::pp_pragma: + parsePragma(); + break; case tok::pp_if: case tok::pp_elif: parseLine(); diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 432caf4774..22b27037cf 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -7177,6 +7177,11 @@ TEST_F(FormatTest, CatchExceptionReferenceBinding) { TEST_F(FormatTest, UnderstandsPragmas) { verifyFormat("#pragma omp reduction(| : var)"); verifyFormat("#pragma omp reduction(+ : var)"); + + EXPECT_EQ("#pragma mark Any non-hyphenated or hyphenated string " + "(including parentheses).", + format("#pragma mark Any non-hyphenated or hyphenated string " + "(including parentheses).")); } #define EXPECT_ALL_STYLES_EQUAL(Styles) \