From: Dmitri Gribenko Date: Sun, 30 Dec 2012 21:27:25 +0000 (+0000) Subject: Formatter: parse and format inline namespaces like regular namespaces X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1f94f2b484dc74e09fe31dd5ea9d3f715be6c133;p=clang Formatter: parse and format inline namespaces like regular namespaces This changes formatting from: inline namespace X { class A { }; } to: inline namespace X { class A { }; } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@171266 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Format/UnwrappedLineParser.cpp b/lib/Format/UnwrappedLineParser.cpp index 6c035b001c..78a1abdcf8 100644 --- a/lib/Format/UnwrappedLineParser.cpp +++ b/lib/Format/UnwrappedLineParser.cpp @@ -100,10 +100,19 @@ void UnwrappedLineParser::parseComments() { void UnwrappedLineParser::parseStatement() { parseComments(); + int TokenNumber = 0; switch (FormatTok.Tok.getKind()) { case tok::kw_namespace: parseNamespace(); return; + case tok::kw_inline: + nextToken(); + TokenNumber++; + if (FormatTok.Tok.is(tok::kw_namespace)) { + parseNamespace(); + return; + } + break; case tok::kw_public: case tok::kw_protected: case tok::kw_private: @@ -132,7 +141,6 @@ void UnwrappedLineParser::parseStatement() { default: break; } - int TokenNumber = 0; do { ++TokenNumber; switch (FormatTok.Tok.getKind()) { diff --git a/unittests/Format/FormatTest.cpp b/unittests/Format/FormatTest.cpp index 43003befb6..b719acfabc 100644 --- a/unittests/Format/FormatTest.cpp +++ b/unittests/Format/FormatTest.cpp @@ -349,6 +349,13 @@ TEST_F(FormatTest, FormatsNamespaces) { " f();\n" "}\n" "}"); + verifyFormat("inline namespace X {\n" + "class A {\n" + "};\n" + "void f() {\n" + " f();\n" + "}\n" + "}"); verifyFormat("using namespace some_namespace;\n" "class A {\n" "};\n"