diff options
-rw-r--r-- | lib/Format/UnwrappedLineParser.cpp | 12 | ||||
-rw-r--r-- | unittests/Format/FormatTest.cpp | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index 7f9e97eab0..f1d08a6bdf 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -311,6 +311,18 @@ void UnwrappedLineParser::parseStructuralElement() { case tok::kw_return: parseReturn(); return; + case tok::kw_extern: + nextToken(); + if (FormatTok.Tok.is(tok::string_literal)) { + nextToken(); + if (FormatTok.Tok.is(tok::l_brace)) { + parseBlock(0); + addUnwrappedLine(); + return; + } + } + // In all other cases, parse the declaration. + break; default: break; } diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index f8c454b7bc..f67cd8c222 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -526,6 +526,10 @@ TEST_F(FormatTest, FormatsNamespaces) { "void f() { f(); }"); } +TEST_F(FormatTest, FormatsExternC) { + verifyFormat("extern \"C\" {\nint a;"); +} + TEST_F(FormatTest, FormatTryCatch) { // FIXME: Handle try-catch explicitly in the UnwrappedLineParser, then we'll // also not create single-line-blocks. |