summaryrefslogtreecommitdiffstats
path: root/clang/lib/Format
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2017-11-10 17:11:18 +0000
committerDaniel Jasper <djasper@google.com>2017-11-10 17:11:18 +0000
commit028d815e2847d7056b37eb938b5fdaca7aa3636e (patch)
tree20f0f06173ad9f4cc338ca9f594afe256f440c30 /clang/lib/Format
parentc77d00e327d4997c5bb34e39ee6e16ca339237ca (diff)
downloadbcm5719-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.cpp10
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;
OpenPOWER on IntegriCloud