Skip to content

Commit 829238c

Browse files
authored
Merge pull request swiftlang#32583 from nathawes/array-literal-sub-expr-indentation-fix-5.3
[5.3][SourceKit/CodeFormat] Fix multi-line array literal elements not indenting relative to their first line.
2 parents 7985c77 + 88d0747 commit 829238c

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

lib/IDE/Formatting.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2341,8 +2341,17 @@ class FormatWalker : public ASTWalker {
23412341
return None;
23422342

23432343
ListAligner Aligner(SM, TargetLocation, L, L, R, true);
2344-
for (auto *Elem: AE->getElements())
2345-
Aligner.updateAlignment(Elem->getStartLoc(), Elem->getEndLoc(), Elem);
2344+
for (auto *Elem: AE->getElements()) {
2345+
SourceRange ElemRange = Elem->getSourceRange();
2346+
Aligner.updateAlignment(ElemRange, Elem);
2347+
if (isTargetContext(ElemRange)) {
2348+
Aligner.setAlignmentIfNeeded(CtxOverride);
2349+
return IndentContext {
2350+
ElemRange.Start,
2351+
!OutdentChecker::hasOutdent(SM, ElemRange, Elem)
2352+
};
2353+
}
2354+
}
23462355
return Aligner.getContextAndSetAlignment(CtxOverride);
23472356
}
23482357

test/swift-indent/basic.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,3 +1052,14 @@ struct <#name#> {
10521052
<#fields#>
10531053
func foo() {}
10541054
}
1055+
1056+
1057+
// Array literal elements should have their continuation lines indented relative to their first line.
1058+
1059+
doStuffWithList([
1060+
baseThing()
1061+
.map { $0 }
1062+
.append(\.sdfsdf),
1063+
secondItem
1064+
.filter {$0 < 10}
1065+
])

0 commit comments

Comments
 (0)