[clang-format] Add space between method modifier and a tuple return type in C#

"public (string name, int age) methodTuple() {}" is now properly spaced

Patch by lukaszkrawczyk@google.com

Reviewed By: jbcoe, krasimir

Differential Revision: https://reviews.llvm.org/D85016
This commit is contained in:
Łukasz Krawczyk 2020-08-10 13:58:28 +01:00 committed by Jonathan Coe
parent 40188f807d
commit 5f104a8099
2 changed files with 24 additions and 0 deletions

View File

@ -3115,6 +3115,16 @@ bool TokenAnnotator::spaceRequiredBefore(const AnnotatedLine &Line,
Keywords.kw_lock)) Keywords.kw_lock))
return Style.SpaceBeforeParens == FormatStyle::SBPO_ControlStatements || return Style.SpaceBeforeParens == FormatStyle::SBPO_ControlStatements ||
spaceRequiredBeforeParens(Right); spaceRequiredBeforeParens(Right);
// space between method modifier and opening parenthesis of a tuple return
// type
if (Left.isOneOf(tok::kw_public, tok::kw_private, tok::kw_protected,
tok::kw_virtual, tok::kw_extern, tok::kw_static,
Keywords.kw_internal, Keywords.kw_abstract,
Keywords.kw_sealed, Keywords.kw_override,
Keywords.kw_async, Keywords.kw_unsafe) &&
Right.is(tok::l_paren))
return true;
} else if (Style.Language == FormatStyle::LK_JavaScript) { } else if (Style.Language == FormatStyle::LK_JavaScript) {
if (Left.is(TT_JsFatArrow)) if (Left.is(TT_JsFatArrow))
return true; return true;

View File

@ -777,6 +777,20 @@ foreach ((A a, B b) in someList) {
verifyFormat(R"(private float[ , ] Values;)", Style); verifyFormat(R"(private float[ , ] Values;)", Style);
verifyFormat(R"(string dirPath = args?[ 0 ];)", Style); verifyFormat(R"(string dirPath = args?[ 0 ];)", Style);
verifyFormat(R"(char[ ,, ] rawCharArray = MakeCharacterGrid();)", Style); verifyFormat(R"(char[ ,, ] rawCharArray = MakeCharacterGrid();)", Style);
// Method returning tuple
verifyFormat(R"(public (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(private (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(protected (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(virtual (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(extern (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(static (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(internal (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(abstract (string name, int age) methodTuple() {})", Style);
verifyFormat(R"(sealed (string name, int age) methodTuple() {})", Style);
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);
} }
TEST_F(FormatTestCSharp, CSharpNullableTypes) { TEST_F(FormatTestCSharp, CSharpNullableTypes) {