[clang-format] Correct indentation for `[key] = value,` entries in C# object initialisers

Restores content of commit cb3f20d27c
reverted in commit 5a101f3773
with a corrected commit message.

Summary: Do not use continuation indent for '[' in blocks in C# code.

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: cfe-commits

Tags: #clang-format, #clang

Differential Revision: https://reviews.llvm.org/D75747
This commit is contained in:
Jonathan Coe 2020-03-10 09:33:39 +00:00
parent 5a101f3773
commit 0c28a0938c
2 changed files with 12 additions and 0 deletions

View File

@ -1047,6 +1047,9 @@ unsigned ContinuationIndenter::getNewLineColumn(const LineState &State) {
if (NextNonComment->is(TT_ArraySubscriptLSquare)) {
if (State.Stack.back().StartOfArraySubscripts != 0)
return State.Stack.back().StartOfArraySubscripts;
else if (Style.isCSharp()) // C# allows `["key"] = value` inside object
// initializers.
return State.Stack.back().Indent;
return ContinuationIndent;
}

View File

@ -549,6 +549,15 @@ Shape[] shapes = new[] { new Circle { Radius = 2.7281, Colour = Colours.Red },
private Transformer _transformer = new X.Y {
Filler = (Shape shape) => { return new Transform.Fill(shape, RED); },
Scaler = (Shape shape) => { return new Transform.Resize(shape, 0.1); },
};)",
Style);
// Dictionary initialisation.
verifyFormat(R"(//
var myDict = new Dictionary<string, string> {
["name"] = _donald,
["age"] = Convert.ToString(DateTime.Today.Year - 1934),
["type"] = _duck,
};)",
Style);
}