@@ -7969,35 +7969,43 @@ void PrintPart(Expression part, ref SmallList4<NamedWithIndex> named)
7969
7969
}
7970
7970
7971
7971
sb . NewLineIndent ( caseBodyIndent ) ;
7972
+ var caseBody = cs . Body ;
7972
7973
if ( enclosedIn == EnclosedIn . LambdaBody )
7973
7974
{
7974
- if ( cs . Body is BlockExpression bl )
7975
+ if ( caseBody is BlockExpression bl )
7975
7976
bl . BlockToCSharpString ( sb , ref named ,
7976
7977
caseBodyIndent , stripNamespace , printType , indentSpaces , notRecognizedToCode , inTheLastBlock : true ) ;
7977
7978
else
7978
- cs . Body . ToCSharpString ( sb . Append ( "return " ) , EnclosedIn . Return , ref named ,
7979
+ {
7980
+ var bodyIn = caseBody . Type != typeof ( void ) ? EnclosedIn . Return : EnclosedIn . AvoidParens ;
7981
+ caseBody . ToCSharpString ( bodyIn == EnclosedIn . Return ? sb . Append ( "return " ) : sb , bodyIn , ref named ,
7979
7982
caseBodyIndent , stripNamespace , printType , indentSpaces , notRecognizedToCode ) . AppendSemicolonOnce ( ) ;
7983
+ }
7980
7984
}
7981
7985
else
7982
- cs . Body . ToCSharpString ( sb , enclosedIn , ref named ,
7986
+ caseBody . ToCSharpString ( sb , enclosedIn , ref named ,
7983
7987
caseBodyIndent , stripNamespace , printType , indentSpaces , notRecognizedToCode ) . AppendSemicolonOnce ( ) ;
7984
7988
}
7985
7989
7986
7990
if ( x . DefaultBody != null )
7987
7991
{
7992
+ var defaultBody = x . DefaultBody ;
7988
7993
sb . NewLineIndent ( caseValueIndent ) . Append ( "default:" ) ;
7989
7994
sb . NewLineIndent ( caseBodyIndent ) ;
7990
7995
if ( enclosedIn == EnclosedIn . LambdaBody )
7991
7996
{
7992
- if ( x . DefaultBody is BlockExpression bl )
7997
+ if ( defaultBody is BlockExpression bl )
7993
7998
bl . BlockToCSharpString ( sb , ref named ,
7994
7999
caseBodyIndent , stripNamespace , printType , indentSpaces , notRecognizedToCode , inTheLastBlock : true ) ;
7995
8000
else
7996
- x . DefaultBody . ToCSharpString ( sb . Append ( "return " ) , EnclosedIn . Return , ref named ,
8001
+ {
8002
+ var bodyIn = defaultBody . Type != typeof ( void ) ? EnclosedIn . Return : EnclosedIn . AvoidParens ;
8003
+ defaultBody . ToCSharpString ( bodyIn == EnclosedIn . Return ? sb . Append ( "return " ) : sb , bodyIn , ref named ,
7997
8004
caseBodyIndent , stripNamespace , printType , indentSpaces , notRecognizedToCode ) . AppendSemicolonOnce ( ) ;
8005
+ }
7998
8006
}
7999
8007
else
8000
- x . DefaultBody . ToCSharpString ( sb , enclosedIn , ref named ,
8008
+ defaultBody . ToCSharpString ( sb , enclosedIn , ref named ,
8001
8009
caseBodyIndent , stripNamespace , printType , indentSpaces , notRecognizedToCode ) . AppendSemicolonOnce ( ) ;
8002
8010
}
8003
8011
0 commit comments