Index: lib/Format/TokenAnnotator.cpp =================================================================== --- lib/Format/TokenAnnotator.cpp +++ lib/Format/TokenAnnotator.cpp @@ -589,6 +589,14 @@ CurrentToken->Type = TT_ImplicitStringLiteral; next(); } + } else if (CurrentToken && CurrentToken->TokenText == "option") { + next(); // Consume "option". + while (CurrentToken) { + // Don't add space after binary operator. + if (CurrentToken->Previous->Type == TT_BinaryOperator) + CurrentToken->Type = TT_ImplicitStringLiteral; + next(); + } } } Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -8795,6 +8795,12 @@ "(including parentheses).")); } +TEST_F(FormatTest, UnderstandPragmaOption) { + verifyFormat("#pragma option -C -A"); + + EXPECT_EQ("#pragma option -C -A", format("#pragma option -C -A")); +} + #define EXPECT_ALL_STYLES_EQUAL(Styles) \ for (size_t i = 1; i < Styles.size(); ++i) \ EXPECT_EQ(Styles[0], Styles[i]) << "Style #" << i << " of " \