public static IMethodSymbol CreateAccessorSymbol( IMethodSymbol accessor, IList <AttributeData> attributes = null, Accessibility?accessibility = null, IMethodSymbol explicitInterfaceSymbol = null, IList <SyntaxNode> statements = null) { return(CodeGenerationSymbolFactory.CreateMethodSymbol( attributes, accessibility ?? accessor.DeclaredAccessibility, accessor.GetSymbolModifiers().WithIsAbstract(statements == null), accessor.ReturnType, explicitInterfaceSymbol ?? accessor.ExplicitInterfaceImplementations.FirstOrDefault(), accessor.Name, accessor.TypeParameters, accessor.Parameters, statements, returnTypeAttributes: accessor.GetReturnTypeAttributes())); }
public static IEventSymbol CreateEventSymbol( IEventSymbol @event, IList <AttributeData> attributes = null, Accessibility?accessibility = null, DeclarationModifiers?modifiers = null, IEventSymbol explicitInterfaceSymbol = null, string name = null, IMethodSymbol addMethod = null, IMethodSymbol removeMethod = null) { return(CodeGenerationSymbolFactory.CreateEventSymbol( attributes, accessibility ?? @event.DeclaredAccessibility, modifiers ?? @event.GetSymbolModifiers(), @event.Type, explicitInterfaceSymbol, name ?? @event.Name, addMethod, removeMethod)); }
public static IMethodSymbol CreateMethodSymbol( IMethodSymbol method, IList <AttributeData> attributes = null, Accessibility?accessibility = null, DeclarationModifiers?modifiers = null, IMethodSymbol explicitInterfaceSymbol = null, string name = null, IList <SyntaxNode> statements = null) { return(CodeGenerationSymbolFactory.CreateMethodSymbol( attributes, accessibility ?? method.DeclaredAccessibility, modifiers ?? method.GetSymbolModifiers(), method.ReturnType, explicitInterfaceSymbol, name ?? method.Name, method.TypeParameters, method.Parameters, statements, returnTypeAttributes: method.GetReturnTypeAttributes())); }
public static IMethodSymbol RenameParameters(this IMethodSymbol method, IList <string> parameterNames) { var parameterList = method.Parameters; if (parameterList.Select(p => p.Name).SequenceEqual(parameterNames)) { return(method); } var parameters = parameterList.RenameParameters(parameterNames); return(CodeGenerationSymbolFactory.CreateMethodSymbol( method.ContainingType, method.GetAttributes(), method.DeclaredAccessibility, method.GetSymbolModifiers(), method.ReturnType, method.ExplicitInterfaceImplementations.FirstOrDefault(), method.Name, method.TypeParameters, parameters)); }
public static IMethodSymbol RemoveAttributeFromParametersAndReturnType( this IMethodSymbol method, INamedTypeSymbol attributeType, IList <SyntaxNode> statements = null, IList <SyntaxNode> handlesExpressions = null) { if (attributeType == null) { return(method); } var someParameterHasAttribute = method.Parameters .Any(m => m.GetAttributes().Any(a => a.AttributeClass.Equals(attributeType))); var returnTypeHasAttribute = method.GetReturnTypeAttributes() .Any(a => a.AttributeClass.Equals(attributeType)); if (!someParameterHasAttribute && !returnTypeHasAttribute) { return(method); } return(CodeGenerationSymbolFactory.CreateMethodSymbol( method.ContainingType, method.GetAttributes(), method.DeclaredAccessibility, method.GetSymbolModifiers(), method.ReturnType, method.ExplicitInterfaceImplementations.FirstOrDefault(), method.Name, method.TypeParameters, method.Parameters.Select(p => CodeGenerationSymbolFactory.CreateParameterSymbol( p.GetAttributes().Where(a => !a.AttributeClass.Equals(attributeType)).ToList(), p.RefKind, p.IsParams, p.Type, p.Name, p.IsOptional, p.HasExplicitDefaultValue, p.HasExplicitDefaultValue ? p.ExplicitDefaultValue : null)).ToList(), statements, handlesExpressions, method.GetReturnTypeAttributes().Where(a => !a.AttributeClass.Equals(attributeType)).ToList())); }
public static IPropertySymbol CreatePropertySymbol( IPropertySymbol property, IList <AttributeData> attributes = null, Accessibility?accessibility = null, DeclarationModifiers?modifiers = null, IPropertySymbol explicitInterfaceSymbol = null, string name = null, bool?isIndexer = null, IMethodSymbol getMethod = null, IMethodSymbol setMethod = null) { return(CodeGenerationSymbolFactory.CreatePropertySymbol( attributes, accessibility ?? property.DeclaredAccessibility, modifiers ?? property.GetSymbolModifiers(), property.Type, explicitInterfaceSymbol, name ?? property.Name, property.Parameters, getMethod, setMethod, isIndexer ?? property.IsIndexer)); }
public static IPropertySymbol RenameParameters(this IPropertySymbol property, IList <string> parameterNames) { var parameterList = property.Parameters; if (parameterList.Select(p => p.Name).SequenceEqual(parameterNames)) { return(property); } var parameters = parameterList.RenameParameters(parameterNames); return(CodeGenerationSymbolFactory.CreatePropertySymbol( property.ContainingType, property.GetAttributes(), property.DeclaredAccessibility, property.GetSymbolModifiers(), property.Type, property.ExplicitInterfaceImplementations.FirstOrDefault(), property.Name, parameters, property.GetMethod, property.SetMethod, property.IsIndexer)); }