@@ -906,7 +906,12 @@ private static bool HasAttribute<T>(INamedTypeSymbol type)
906906 return type ? . GetAttributes ( ) . Any ( a => IsAttribute < T > ( a . AttributeClass ) ) ?? false ;
907907 }
908908
909- private static NameSyntax GetFullyQualifiedSymbolName ( INamespaceOrTypeSymbol symbol )
909+ private static NameSyntax GetFullyQualifiedSymbolName ( INamedTypeSymbol typeSymbol )
910+ {
911+ return ( NameSyntax ) GetFullyQualifiedSymbolName ( ( INamespaceOrTypeSymbol ) typeSymbol ) ;
912+ }
913+
914+ private static TypeSyntax GetFullyQualifiedSymbolName ( INamespaceOrTypeSymbol symbol )
910915 {
911916 if ( symbol == null )
912917 {
@@ -918,26 +923,23 @@ private static NameSyntax GetFullyQualifiedSymbolName(INamespaceOrTypeSymbol sym
918923 var arraySymbol = ( IArrayTypeSymbol ) symbol ;
919924 var elementType = GetFullyQualifiedSymbolName ( arraySymbol . ElementType ) ;
920925
921- // I don't know how to create a NameSyntax with an array inside it,
922- // so use ParseName as an escape hatch.
923- ////return SyntaxFactory.ArrayType(elementType)
924- //// .AddRankSpecifiers(SyntaxFactory.ArrayRankSpecifier()
925- //// .AddSizes(SyntaxFactory.OmittedArraySizeExpression()));
926- return SyntaxFactory . ParseName ( elementType . ToString ( ) + "[]" ) ;
926+ return SyntaxFactory . ArrayType ( elementType )
927+ . AddRankSpecifiers ( SyntaxFactory . ArrayRankSpecifier ( )
928+ . AddSizes ( SyntaxFactory . OmittedArraySizeExpression ( ) ) ) ;
927929 }
928930
929931 if ( string . IsNullOrEmpty ( symbol . Name ) )
930932 {
931933 return null ;
932934 }
933935
934- var parent = GetFullyQualifiedSymbolName ( symbol . ContainingSymbol as INamespaceOrTypeSymbol ) ;
936+ var parent = GetFullyQualifiedSymbolName ( symbol . ContainingSymbol as INamespaceOrTypeSymbol ) as NameSyntax ;
935937 SimpleNameSyntax leafName = SyntaxFactory . IdentifierName ( symbol . Name ) ;
936938 var typeSymbol = symbol as INamedTypeSymbol ;
937939 if ( typeSymbol != null && typeSymbol . IsGenericType )
938940 {
939941 leafName = SyntaxFactory . GenericName ( symbol . Name )
940- . WithTypeArgumentList ( SyntaxFactory . TypeArgumentList ( Syntax . JoinSyntaxNodes < TypeSyntax > (
942+ . WithTypeArgumentList ( SyntaxFactory . TypeArgumentList ( Syntax . JoinSyntaxNodes (
941943 SyntaxKind . CommaToken ,
942944 typeSymbol . TypeArguments . Select ( GetFullyQualifiedSymbolName ) ) ) ) ;
943945 }
@@ -1436,9 +1438,9 @@ public IdentifierNameSyntax NameAsField
14361438 }
14371439 }
14381440
1439- public INamespaceOrTypeSymbol Type => this . Symbol ? . Type ;
1441+ public ITypeSymbol Type => this . Symbol ? . Type ;
14401442
1441- public NameSyntax TypeSyntax => GetFullyQualifiedSymbolName ( this . Type ) ;
1443+ public TypeSyntax TypeSyntax => GetFullyQualifiedSymbolName ( this . Type ) ;
14421444
14431445 public bool IsGeneratedImmutableType => ! this . TypeAsGeneratedImmutable . IsDefault ;
14441446
0 commit comments