diff options
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 9 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 4 |
2 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index b04ccd0ba75..d80e5504949 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -529,6 +529,15 @@ public: parsePreprocessorDirective(); return LT_PreprocessorDirective; } + + // Directly allow to 'import <string-literal>' to support protocol buffer + // definitions (code.google.com/p/protobuf) or missing "#" (either way we + // should not break the line). + IdentifierInfo *Info = CurrentToken->Tok.getIdentifierInfo(); + if (Info && Info->getPPKeywordID() == tok::pp_import && + CurrentToken->Next && CurrentToken->Next->is(tok::string_literal)) + parseIncludeDirective(); + while (CurrentToken != NULL) { if (CurrentToken->is(tok::kw_virtual)) KeywordVirtualFound = true; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index c75df9ce151..0fade5b42f0 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -4657,6 +4657,10 @@ TEST_F(FormatTest, HandlesIncludeDirectives) { verifyFormat("#if __has_include(<strstream>)\n" "#include <strstream>\n" "#endif"); + + // Protocol buffer definition or missing "#". + verifyFormat("import \"aaaaaaaaaaaaaaaaa/aaaaaaaaaaaaaaa\";", + getLLVMStyleWithColumns(30)); } //===----------------------------------------------------------------------===// |