Index: lib/Format/TokenAnnotator.cpp =================================================================== --- lib/Format/TokenAnnotator.cpp +++ lib/Format/TokenAnnotator.cpp @@ -572,6 +572,17 @@ CurrentToken->Type = TT_ImplicitStringLiteral; next(); } + } else if (CurrentToken && CurrentToken->TokenText == "option") { + auto PreviousToken = CurrentToken; + next(); // Consume "option". + while (CurrentToken) { + // Don't add space after binary operator. + if (PreviousToken->Type == TT_BinaryOperator) { + CurrentToken->Type = TT_ImplicitStringLiteral; + } + PreviousToken = CurrentToken; + next(); + } } } Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -8710,6 +8710,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 " \