@@ -1376,12 +1376,12 @@ string EmitConstantValue(object? constantValue)
13761376 string x => $ "\" { x } \" ",
13771377 char x => $ "'{ x } '",
13781378 float x => $ "{ x } f",
1379- decimal x => $ "{ x } D ",
1379+ decimal x => $ "{ x } M ",
13801380 bool x => x ? "true" : "false" ,
13811381 _ => constantValue . ToString ( )
13821382 } ;
13831383 }
1384- return "null " ;
1384+ return "default! " ;
13851385 }
13861386
13871387 string EmitExpression ( ExpressionSyntax expression )
@@ -1392,13 +1392,13 @@ string EmitExpression(ExpressionSyntax expression)
13921392 {
13931393 var memberAccess = ( MemberAccessExpressionSyntax ) expression ;
13941394 var memberSymbol = semanticModel . GetSymbolInfo ( memberAccess . Name ) . Symbol ;
1395- if ( memberSymbol is INamedTypeSymbol namedTypeSymbol && namedTypeSymbol . TypeKind == TypeKind . Enum )
1395+ if ( memberSymbol is INamedTypeSymbol { TypeKind : TypeKind . Enum } namedTypeSymbol )
13961396 {
1397- return $ "{ GetTypeFullName ( namedTypeSymbol , semanticModel ) } .{ memberAccess . Name } ";
1397+ return $ "{ GetTypeFullName ( namedTypeSymbol ) } .{ memberAccess . Name } ";
13981398 }
1399- if ( memberSymbol is IFieldSymbol fieldSymbol && fieldSymbol . ContainingType . TypeKind == TypeKind . Enum )
1399+ if ( memberSymbol is IFieldSymbol { Type . TypeKind : TypeKind . Enum } fieldSymbol )
14001400 {
1401- return $ "{ GetTypeFullName ( fieldSymbol . ContainingType , semanticModel ) } .{ fieldSymbol . Name } ";
1401+ return $ "{ GetTypeFullName ( fieldSymbol . Type ) } .{ fieldSymbol . Name } ";
14021402 }
14031403 break ;
14041404 }
@@ -1412,7 +1412,7 @@ string EmitExpression(ExpressionSyntax expression)
14121412 var arguments = string . Join ( ", " ,
14131413 objectCreation . ArgumentList ? . Arguments . Select ( arg =>
14141414 EmitExpression ( arg . Expression ) ) ?? Enumerable . Empty < string > ( ) ) ;
1415- return $ "new { x . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) } ({ arguments } )";
1415+ return $ "new { GetTypeFullName ( x ) } ({ arguments } )";
14161416 }
14171417 break ;
14181418 }
@@ -1426,10 +1426,15 @@ string EmitExpression(ExpressionSyntax expression)
14261426 return expression . ToString ( ) ;
14271427 }
14281428
1429- string GetTypeFullName ( ITypeSymbol typeSymbol , SemanticModel semanticModel )
1429+ static string GetTypeFullName ( ITypeSymbol typeSymbol )
14301430 {
1431- var containingType = typeSymbol . ContainingType ;
1432- var containingTypeFullName = containingType == null ? "" : GetTypeFullName ( containingType , semanticModel ) + "." ;
1433- return containingTypeFullName + typeSymbol . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) ;
1431+ if ( typeSymbol . ContainingType is { } containingType )
1432+ {
1433+ // nested type
1434+ var containingTypeFullName = containingType . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) ;
1435+ var typeName = typeSymbol . ToDisplayString ( SymbolDisplayFormat . MinimallyQualifiedFormat ) ;
1436+ return $ "{ containingTypeFullName } .{ typeName } ";
1437+ }
1438+ return typeSymbol . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) ;
14341439 }
14351440}
0 commit comments