Index: clang/lib/Format/TokenAnnotator.cpp =================================================================== --- clang/lib/Format/TokenAnnotator.cpp +++ clang/lib/Format/TokenAnnotator.cpp @@ -2869,7 +2869,8 @@ // 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_ControlStatements || + spaceRequiredBeforeParens(Right); } else if (Style.Language == FormatStyle::LK_JavaScript) { if (Left.is(TT_JsFatArrow)) return true; Index: clang/unittests/Format/FormatTestCSharp.cpp =================================================================== --- clang/unittests/Format/FormatTestCSharp.cpp +++ clang/unittests/Format/FormatTestCSharp.cpp @@ -238,8 +238,6 @@ "}", Style); - verifyFormat("using (StreamWriter sw = new StreamWriter (filenameB)) {}", - Style); Style.SpaceBeforeParens = FormatStyle::SBPO_Never; verifyFormat("public void foo() {\n" @@ -247,7 +245,17 @@ "}", Style); - verifyFormat("using(StreamWriter sw = new StreamWriter(filenameB)) {}", + Style.SpaceBeforeParens = FormatStyle::SBPO_ControlStatements; + verifyFormat("public void foo() {\n" + " using (StreamWriter sw = new StreamWriter(filenameA)) {}\n" + "}", + Style); + + Style.SpaceBeforeParens = FormatStyle::SBPO_NonEmptyParentheses; + verifyFormat("public void foo() {\n" + " using (StreamWriter sw = new StreamWriter (filenameA)) {}\n" + " using() {}\n" + "}", Style); }