@@ -21,41 +21,6 @@ namespace Microsoft.CodeAnalysis;
2121/// </summary>
2222internal static class SymbolExtensions
2323{
24- /// <content>
25- /// The <see cref="Type"/> extensions.
26- /// </content>
27- /// <param name="type">The type.</param>
28- extension ( Type type )
29- {
30- /// <summary>
31- /// Converts the type to the <see cref="TypeSyntax"/>.
32- /// </summary>
33- /// <param name="parameters">The type parameters.</param>
34- /// <returns>The type syntax.</returns>
35- /// <exception cref="ArgumentOutOfRangeException">The parameters are the wrong length.</exception>
36- public NameSyntax ToTypeSyntax ( IEnumerable < TypeSyntax > parameters )
37- {
38- if ( ! type . IsGenericTypeDefinition )
39- {
40- return SyntaxFactory . QualifiedName ( type . FullName ) ;
41- }
42-
43- var index = type . Name . IndexOf ( '`' ) ;
44- var name = type . Name [ ..index ] ;
45- var count = int . Parse ( type . Name [ ( index + 1 ) ..] , System . Globalization . CultureInfo . InvariantCulture ) ;
46-
47- var parameterList = SeparatedList ( parameters ) ;
48- if ( count != parameterList . Count )
49- {
50- throw new ArgumentOutOfRangeException ( nameof ( parameters ) ) ;
51- }
52-
53- return QualifiedName (
54- SyntaxFactory . QualifiedName ( type . Namespace ) ,
55- GenericName ( Identifier ( name ) , TypeArgumentList ( parameterList ) ) ) ;
56- }
57- }
58-
5924 /// <content>
6025 /// The <see cref="ITypeSymbol"/> extensions.
6126 /// </content>
@@ -211,7 +176,7 @@ static SeparatedSyntaxList<TypeSyntax> GetTypeArguments(INamedTypeSymbol type)
211176 {
212177 { SpecialType : SpecialType . System_Collections_Generic_ICollection_T } => true ,
213178 { OriginalDefinition : { } originalDefinition } when SymbolEqualityComparer . Default . Equals ( originalDefinition , collectionType ) => true ,
214- { AllInterfaces : { } interfaces } when interfaces . Select ( i => i . OriginalDefinition ) . Contains ( collectionType , SymbolEqualityComparer . Default ) => true ,
179+ { AllInterfaces : var interfaces } when interfaces . Select ( i => i . OriginalDefinition ) . Contains ( collectionType , SymbolEqualityComparer . Default ) => true ,
215180 _ => false ,
216181 } ;
217182
@@ -221,49 +186,46 @@ static SeparatedSyntaxList<TypeSyntax> GetTypeArguments(INamedTypeSymbol type)
221186 public bool IsDictionary ( ITypeSymbol ? dictionaryType ) => type switch
222187 {
223188 { OriginalDefinition : { } originalDefinition } when SymbolEqualityComparer . Default . Equals ( originalDefinition , dictionaryType ) => true ,
224- { AllInterfaces : { } interfaces } when interfaces . Select ( i => i . OriginalDefinition ) . Contains ( dictionaryType , SymbolEqualityComparer . Default ) => true ,
189+ { AllInterfaces : var interfaces } when interfaces . Select ( i => i . OriginalDefinition ) . Contains ( dictionaryType , SymbolEqualityComparer . Default ) => true ,
225190 _ => false ,
226191 } ;
227192 }
228193
229- extension ( IMethodSymbol methodSymbol )
194+ /// <content>
195+ /// The <see cref="IMethodSymbol"/> extensions.
196+ /// </content>
197+ /// <param name="method">The method symbol.</param>
198+ extension ( IMethodSymbol method )
230199 {
231200 /// <summary>
232201 /// Gets the parameter list.
233202 /// </summary>
234203 /// <returns>The parameter list.</returns>
235- public ParameterListSyntax GetParameterList ( )
236- {
237- return ParameterList ( SeparatedList ( GetParameters ( methodSymbol ) ) ) ;
238-
239- static IEnumerable < ParameterSyntax > GetParameters ( IMethodSymbol methodSymbol )
240- {
241- return methodSymbol . Parameters . Select ( parameter =>
242- Parameter (
243- Identifier ( parameter . Name ) )
244- . WithType ( parameter . Type . ToType ( ) ) ) ;
245- }
246- }
204+ public ParameterListSyntax GetParameterList ( ) =>
205+ ParameterList (
206+ SeparatedList (
207+ method . Parameters . Select ( parameter =>
208+ Parameter (
209+ Identifier ( parameter . Name ) )
210+ . WithType ( parameter . Type . ToType ( ) ) ) ) ) ;
247211
248212 /// <summary>
249213 /// Gets the object creation.
250214 /// </summary>
251215 /// <returns>The object creation list.</returns>
252216 public ObjectCreationExpressionSyntax GetObjectCreation ( )
253217 {
254- if ( methodSymbol is { MethodKind : MethodKind . Constructor , ReceiverType : { } receiverType } )
218+ if ( method is { MethodKind : MethodKind . Constructor , ReceiverType : { } receiverType } )
255219 {
256220 return ObjectCreationExpression (
257221 SyntaxFactory . QualifiedName ( receiverType . ToString ( ) ) )
258- . WithArgumentList ( ArgumentList ( SeparatedList ( GetArguments ( methodSymbol ) ) ) ) ;
222+ . WithArgumentList (
223+ ArgumentList (
224+ SeparatedList (
225+ method . Parameters . Select ( static parameter => Argument ( IdentifierName ( parameter . Name ) ) ) ) ) ) ;
259226 }
260227
261228 throw new InvalidOperationException ( ) ;
262-
263- static IEnumerable < ArgumentSyntax > GetArguments ( IMethodSymbol methodSymbol )
264- {
265- return Enumerable . Select ( methodSymbol . Parameters , parameter => Argument ( IdentifierName ( parameter . Name ) ) ) ;
266- }
267229 }
268230 }
269231}
0 commit comments