public static bool IsPublicStaticReadOnly(IFieldSymbol fieldSymbol, string name = null) { return(fieldSymbol?.DeclaredAccessibility == Accessibility.Public && fieldSymbol.IsStatic && fieldSymbol.IsReadOnly && StringUtility.IsNullOrEquals(name, fieldSymbol.Name)); }
public static bool IsPublicInstanceNonGeneric(IMethodSymbol methodSymbol, string name = null) { return(methodSymbol?.DeclaredAccessibility == Accessibility.Public && !methodSymbol.IsStatic && !methodSymbol.IsGenericMethod && StringUtility.IsNullOrEquals(name, methodSymbol.Name)); }
private static bool IsLinqExtensionOfIEnumerableOfTWithPredicate( IMethodSymbol methodSymbol, string name, int parameterCount, SemanticModel semanticModel, bool allowImmutableArrayExtension = false) { if (methodSymbol.DeclaredAccessibility != Accessibility.Public) { return(false); } if (!StringUtility.IsNullOrEquals(name, methodSymbol.Name)) { return(false); } INamedTypeSymbol containingType = methodSymbol.ContainingType; if (containingType == null) { return(false); } if (containingType.Equals(semanticModel.GetTypeByMetadataName(MetadataNames.System_Linq_Enumerable))) { ImmutableArray <IParameterSymbol> parameters = methodSymbol.Parameters; return(parameters.Length == parameterCount && parameters[0].Type.OriginalDefinition.IsIEnumerableOfT() && IsPredicateFunc(parameters[1].Type, methodSymbol.TypeArguments[0], semanticModel)); } else if (allowImmutableArrayExtension && containingType.Equals(semanticModel.GetTypeByMetadataName(MetadataNames.System_Linq_ImmutableArrayExtensions))) { ImmutableArray <IParameterSymbol> parameters = methodSymbol.Parameters; return(parameters.Length == parameterCount && IsImmutableArrayOfT(parameters[0].Type, semanticModel) && IsPredicateFunc(parameters[1].Type, methodSymbol.TypeArguments[0], semanticModel)); } return(false); }
internal static bool IsLinqExtensionOfIEnumerableOfT( IMethodSymbol methodSymbol, string name = null, int parameterCount = -1, bool allowImmutableArrayExtension = false) { if (methodSymbol.DeclaredAccessibility != Accessibility.Public) { return(false); } if (!StringUtility.IsNullOrEquals(name, methodSymbol.Name)) { return(false); } INamedTypeSymbol containingType = methodSymbol.ContainingType; if (containingType == null) { return(false); } if (containingType.HasMetadataName(MetadataNames.System_Linq_Enumerable)) { ImmutableArray <IParameterSymbol> parameters = methodSymbol.Parameters; return((parameterCount == -1 || parameters.Length == parameterCount) && parameters[0].Type.OriginalDefinition.SpecialType == SpecialType.System_Collections_Generic_IEnumerable_T); } else if (allowImmutableArrayExtension && containingType.HasMetadataName(MetadataNames.System_Linq_ImmutableArrayExtensions)) { ImmutableArray <IParameterSymbol> parameters = methodSymbol.Parameters; return((parameterCount == -1 || parameters.Length == parameterCount) && IsImmutableArrayOfT(parameters[0].Type)); } return(false); }
public static bool IsPublicInstance(IPropertySymbol propertySymbol, string name = null) { return(propertySymbol?.DeclaredAccessibility == Accessibility.Public && !propertySymbol.IsStatic && StringUtility.IsNullOrEquals(name, propertySymbol.Name)); }