clang-format: [JS] Sort all JavaScript imports if any changed.

Summary:
User feedback is that they expect *all* imports to be sorted if any import was
affected by a change, not just imports up to the first non-affected line, as
clang-format currently does.

Reviewers: djasper

Subscribers: klimek, cfe-commits

Differential Revision: https://reviews.llvm.org/D23972

llvm-svn: 280485
This commit is contained in:
Martin Probst
2016-09-02 14:01:17 +00:00
parent 7a78e5113a
commit b480ffbcef
2 changed files with 12 additions and 25 deletions

View File

@@ -284,14 +284,8 @@ private:
SourceLocation Start;
bool FoundLines = false;
AnnotatedLine *FirstNonImportLine = nullptr;
bool AnyImportAffected = false;
for (auto Line : AnnotatedLines) {
if (!Line->Affected) {
// Only sort the first contiguous block of affected lines.
if (FoundLines)
break;
else
continue;
}
Current = Line->First;
LineEnd = Line->Last;
skipComments();
@@ -309,6 +303,7 @@ private:
FirstNonImportLine = Line;
break;
}
AnyImportAffected = AnyImportAffected || Line->Affected;
Reference.Range.setEnd(LineEnd->Tok.getEndLoc());
DEBUG({
llvm::dbgs() << "JsModuleReference: {"
@@ -325,6 +320,9 @@ private:
References.push_back(Reference);
Start = SourceLocation();
}
// Sort imports if any import line was affected.
if (!AnyImportAffected)
References.clear();
return std::make_pair(References, FirstNonImportLine);
}