forked from OSchip/llvm-project
[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
This commit is contained in:
parent
c77d00e327
commit
028d815e28
|
@ -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;
|
||||
|
|
|
@ -348,6 +348,13 @@ TEST_F(UsingDeclarationsSorterTest, SortsPartialRangeOfUsingDeclarations) {
|
|||
{tooling::Range(19, 1)}));
|
||||
}
|
||||
|
||||
TEST_F(UsingDeclarationsSorterTest, SortsUsingDeclarationsWithLeadingkComments) {
|
||||
EXPECT_EQ("/* comment */ using a;\n"
|
||||
"/* comment */ using b;",
|
||||
sortUsingDeclarations("/* comment */ using b;\n"
|
||||
"/* comment */ using a;"));
|
||||
}
|
||||
|
||||
} // end namespace
|
||||
} // end namespace format
|
||||
} // end namespace clang
|
||||
|
|
Loading…
Reference in New Issue