diff options
author | Daniel Jasper <djasper@google.com> | 2017-11-10 17:11:18 +0000 |
---|---|---|
committer | Daniel Jasper <djasper@google.com> | 2017-11-10 17:11:18 +0000 |
commit | 028d815e2847d7056b37eb938b5fdaca7aa3636e (patch) | |
tree | 20f0f06173ad9f4cc338ca9f594afe256f440c30 /clang/lib/Format | |
parent | c77d00e327d4997c5bb34e39ee6e16ca339237ca (diff) | |
download | bcm5719-llvm-028d815e2847d7056b37eb938b5fdaca7aa3636e.tar.gz bcm5719-llvm-028d815e2847d7056b37eb938b5fdaca7aa3636e.zip |
[clang-format] Handle leading comments in using declaration
This fixes clang-format internal assertion for the following code:
/* override */ using std::string;
Patch by Igor Sugak. Thank you.
llvm-svn: 317901
Diffstat (limited to 'clang/lib/Format')
-rw-r--r-- | clang/lib/Format/UsingDeclarationsSorter.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/Format/UsingDeclarationsSorter.cpp b/clang/lib/Format/UsingDeclarationsSorter.cpp index 72151137eed..2c124ec78b1 100644 --- a/clang/lib/Format/UsingDeclarationsSorter.cpp +++ b/clang/lib/Format/UsingDeclarationsSorter.cpp @@ -172,15 +172,17 @@ std::pair<tooling::Replacements, unsigned> UsingDeclarationsSorter::analyze( tooling::Replacements Fixes; SmallVector<UsingDeclaration, 4> UsingDeclarations; for (size_t I = 0, E = AnnotatedLines.size(); I != E; ++I) { + const auto *FirstTok = AnnotatedLines[I]->First; if (AnnotatedLines[I]->InPPDirective || - !AnnotatedLines[I]->startsWith(tok::kw_using) || - AnnotatedLines[I]->First->Finalized) { + !AnnotatedLines[I]->startsWith(tok::kw_using) || FirstTok->Finalized) { endUsingDeclarationBlock(&UsingDeclarations, SourceMgr, &Fixes); continue; } - if (AnnotatedLines[I]->First->NewlinesBefore > 1) + if (FirstTok->NewlinesBefore > 1) endUsingDeclarationBlock(&UsingDeclarations, SourceMgr, &Fixes); - std::string Label = computeUsingDeclarationLabel(AnnotatedLines[I]->First); + const auto *UsingTok = + FirstTok->is(tok::comment) ? FirstTok->getNextNonComment() : FirstTok; + std::string Label = computeUsingDeclarationLabel(UsingTok); if (Label.empty()) { endUsingDeclarationBlock(&UsingDeclarations, SourceMgr, &Fixes); continue; |