diff --git a/clang/lib/Format/TokenAnnotator.cpp b/clang/lib/Format/TokenAnnotator.cpp --- a/clang/lib/Format/TokenAnnotator.cpp +++ b/clang/lib/Format/TokenAnnotator.cpp @@ -3080,7 +3080,8 @@ // space between keywords and paren e.g. "using (" if (Right.is(tok::l_paren)) - if (Left.isOneOf(tok::kw_using, Keywords.kw_async, Keywords.kw_when)) + if (Left.isOneOf(tok::kw_using, Keywords.kw_async, Keywords.kw_when, + Keywords.kw_lock)) return Style.SpaceBeforeParens == FormatStyle::SBPO_ControlStatements || spaceRequiredBeforeParens(Right); } else if (Style.Language == FormatStyle::LK_JavaScript) { diff --git a/clang/unittests/Format/FormatTestCSharp.cpp b/clang/unittests/Format/FormatTestCSharp.cpp --- a/clang/unittests/Format/FormatTestCSharp.cpp +++ b/clang/unittests/Format/FormatTestCSharp.cpp @@ -741,6 +741,9 @@ })", Style); + // space after lock in `lock (processes)`. + verifyFormat("lock (process)", Style); + Style.SpacesInSquareBrackets = true; verifyFormat(R"(private float[ , ] Values;)", Style); verifyFormat(R"(string dirPath = args?[ 0 ];)", Style);