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 @@ -2763,7 +2763,7 @@ (Style.SpaceBeforeParens != FormatStyle::SBPO_Never && (Left.isOneOf(tok::pp_elif, tok::kw_for, tok::kw_while, tok::kw_switch, tok::kw_case, TT_ForEachMacro, - TT_ObjCForIn) || + tok::kw_using, TT_ObjCForIn) || Left.isIf(Line.Type != LT_PreprocessorDirective) || (Left.isOneOf(tok::kw_try, Keywords.kw___except, tok::kw_catch, tok::kw_new, tok::kw_delete) && @@ -2861,7 +2861,7 @@ // space between keywords and paren e.g. "using (" if (Right.is(tok::l_paren)) if (Left.is(tok::kw_using)) - return spaceRequiredBeforeParens(Left); + return Style.SpaceBeforeParens != FormatStyle::SBPO_Never; } else if (Style.Language == FormatStyle::LK_JavaScript) { if (Left.is(TT_JsFatArrow)) return true; 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 @@ -249,6 +249,15 @@ verifyFormat("using(StreamWriter sw = new StreamWriter(filenameB)) {}", Style); + + Style.SpaceBeforeParens = FormatStyle::SBPO_ControlStatements; + verifyFormat("public void foo() {\n" + " using (StreamWriter sw = new StreamWriter(filenameA)) {}\n" + "}", + Style); + + verifyFormat("using (StreamWriter sw = new StreamWriter(filenameB)) {}", + Style); } TEST_F(FormatTestCSharp, CSharpRegions) {