diff options
author | Daniel Jasper <djasper@google.com> | 2013-08-12 12:16:34 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2013-08-12 12:16:34 +0000 |
commit | 5903685a285f4993cf14d88751e285bbd8a1f562 (patch) | |
tree | 2d94662dac36043240f0345b46ef394892108d4f /clang | |
parent | 15dc0af78b5464b89bdf00de1c462adb526f0bb0 (diff) | |
download | bcm5719-llvm-5903685a285f4993cf14d88751e285bbd8a1f562.tar.gz bcm5719-llvm-5903685a285f4993cf14d88751e285bbd8a1f562.zip |
clang-format: Correctly format alias declarations.
Before:
template <class CallbackClass>
using MyCallback = void(CallbackClass::*)(SomeObject * Data);");
After:
template <class CallbackClass>
using MyCallback = void (CallbackClass::*)(SomeObject *Data);");
Also fix three wrong indentations.
llvm-svn: 188172
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Format/Format.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Format/TokenAnnotator.cpp | 11 | ||||
-rw-r--r-- | clang/unittests/Format/FormatTest.cpp | 5 |
3 files changed, 13 insertions, 7 deletions
diff --git a/clang/lib/Format/Format.cpp b/clang/lib/Format/Format.cpp index 255f5142f07..322e8670068 100644 --- a/clang/lib/Format/Format.cpp +++ b/clang/lib/Format/Format.cpp @@ -973,7 +973,7 @@ private: // Exempts unterminated string literals from line breaking. The user will // likely want to terminate the string before any line breaking is done. if (Current.IsUnterminatedLiteral) - return 0; + return 0; Token.reset(new BreakableStringLiteral(Current, StartColumn, Line.InPPDirective, Encoding)); @@ -1228,7 +1228,7 @@ private: return true; if (!Style.Cpp11BracedListStyle && Current.is(tok::r_brace) && State.Stack.back().BreakBeforeClosingBrace) - return true; + return true; if (Previous.is(tok::semi) && State.LineContainsContinuedForLoopSection) return true; if (Style.BreakConstructorInitializersBeforeComma) { diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp index 1a9012fa88d..56a1dbac76d 100644 --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -123,6 +123,10 @@ private: } } + if (CurrentToken->Previous->Type == TT_PointerOrReference && + CurrentToken->Previous->Previous->isOneOf(tok::l_paren, + tok::coloncolon)) + MightBeFunctionType = true; if (CurrentToken->is(tok::r_paren)) { if (MightBeFunctionType && CurrentToken->Next && (CurrentToken->Next->is(tok::l_paren) || @@ -152,10 +156,6 @@ private: } if (CurrentToken->isOneOf(tok::r_square, tok::r_brace)) return false; - if (CurrentToken->Previous->Type == TT_PointerOrReference && - CurrentToken->Previous->Previous->isOneOf(tok::l_paren, - tok::coloncolon)) - MightBeFunctionType = true; updateParameterCount(Left, CurrentToken); if (CurrentToken->is(tok::comma) && CurrentToken->Next && !CurrentToken->Next->HasUnescapedNewline && @@ -577,6 +577,7 @@ private: void determineTokenType(FormatToken &Current) { if (Current.getPrecedence() == prec::Assignment && + !Line.First->isOneOf(tok::kw_template, tok::kw_using) && (!Current.Previous || Current.Previous->isNot(tok::kw_operator))) { Contexts.back().IsExpression = true; for (FormatToken *Previous = Current.Previous; @@ -593,7 +594,7 @@ private: (Current.is(tok::l_paren) && !Line.MustBeDeclaration && !Line.InPPDirective && (!Current.Previous || - !Current.Previous->isOneOf(tok::kw_for, tok::kw_catch)))) { + !Current.Previous->isOneOf(tok::kw_for, tok::kw_catch)))) { Contexts.back().IsExpression = true; } else if (Current.isOneOf(tok::r_paren, tok::greater, tok::comma)) { for (FormatToken *Previous = Current.Previous; diff --git a/clang/unittests/Format/FormatTest.cpp b/clang/unittests/Format/FormatTest.cpp index 739c0e5ad94..f5e16d0e896 100644 --- a/clang/unittests/Format/FormatTest.cpp +++ b/clang/unittests/Format/FormatTest.cpp @@ -3797,9 +3797,14 @@ TEST_F(FormatTest, FormatsFunctionTypes) { verifyFormat("void *(*a)(int *, SomeType *);"); verifyFormat("int (*func)(void *);"); verifyFormat("void f() { int (*func)(void *); }"); + verifyFormat("template <class CallbackClass>\n" + "using MyCallback = void (CallbackClass::*)(SomeObject *Data);"); verifyGoogleFormat("A<void*(int*, SomeType*)>;"); verifyGoogleFormat("void* (*a)(int);"); + verifyGoogleFormat( + "template <class CallbackClass>\n" + "using MyCallback = void (CallbackClass::*)(SomeObject* Data);"); // Other constructs can look somewhat like function types: verifyFormat("A<sizeof(*x)> a;"); |