Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -3915,6 +3915,8 @@ } } } + if (Style.isCSharp() && Left.is(Keywords.kw_is) && Right.is(tok::l_square)) + return true; const auto SpaceRequiredForArrayInitializerLSquare = [](const FormatToken &LSquareTok, const FormatStyle &Style) { return Style.SpacesInContainerLiterals || Index: clang/unittests/Format/FormatTestCSharp.cpp =================================================================== --- clang/unittests/Format/FormatTestCSharp.cpp +++ clang/unittests/Format/FormatTestCSharp.cpp @@ -1176,6 +1176,14 @@ verifyFormat(R"(override (string name, int age) methodTuple() {})", Style); verifyFormat(R"(async (string name, int age) methodTuple() {})", Style); verifyFormat(R"(unsafe (string name, int age) methodTuple() {})", Style); + + Style.SpacesInSquareBrackets = false; + Style.SpaceBeforeSquareBrackets = true; + verifyFormat("return a is [1, 2, 3]", Style); + verifyFormat("return a is [..]", Style); + Style.SpaceBeforeSquareBrackets = false; + verifyFormat("return a is [1, 2, 3]", Style); + verifyFormat("return a is [..]", Style); } TEST_F(FormatTestCSharp, CSharpNullableTypes) {