Index: lib/Format/Format.cpp =================================================================== --- lib/Format/Format.cpp +++ lib/Format/Format.cpp @@ -1725,12 +1725,22 @@ Tok.Tok.setKind(tok::char_constant); } } - if (Tok.is(tok::comment) && Tok.TokenText == "// clang-format on") + if (isFormatOnDirective(Tok)) FormattingDisabled = false; Tok.Finalized = FormattingDisabled; - if (Tok.is(tok::comment) && Tok.TokenText == "// clang-format off") + if (isFormatOffDirective(Tok)) FormattingDisabled = true; } + + static bool isFormatOffDirective(const FormatToken &Tok) { + return Tok.is(tok::comment) && (Tok.TokenText == "// clang-format off" || + Tok.TokenText == "/* clang-format off */"); + } + + static bool isFormatOnDirective(const FormatToken &Tok) { + return Tok.is(tok::comment) && (Tok.TokenText == "// clang-format on" || + Tok.TokenText == "/* clang-format on */"); + } }; static StringRef getLanguageName(FormatStyle::LanguageKind Language) { Index: unittests/Format/FormatTest.cpp =================================================================== --- unittests/Format/FormatTest.cpp +++ unittests/Format/FormatTest.cpp @@ -9355,6 +9355,16 @@ " int j;\n" " // clang-format on\n" " int k;")); + EXPECT_EQ("int i;\n" + "/* clang-format off */\n" + " int j;\n" + "/* clang-format on */\n" + "int k;", + format(" int i;\n" + " /* clang-format off */\n" + " int j;\n" + " /* clang-format on */\n" + " int k;")); } TEST_F(FormatTest, DoNotCrashOnInvalidInput) {