示例#1
0
 public static bool IsPublicStaticReadOnly(IFieldSymbol fieldSymbol, string name = null)
 {
     return(fieldSymbol?.DeclaredAccessibility == Accessibility.Public &&
            fieldSymbol.IsStatic &&
            fieldSymbol.IsReadOnly &&
            StringUtility.IsNullOrEquals(name, fieldSymbol.Name));
 }
示例#2
0
 public static bool IsPublicInstanceNonGeneric(IMethodSymbol methodSymbol, string name = null)
 {
     return(methodSymbol?.DeclaredAccessibility == Accessibility.Public &&
            !methodSymbol.IsStatic &&
            !methodSymbol.IsGenericMethod &&
            StringUtility.IsNullOrEquals(name, methodSymbol.Name));
 }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
 public static bool IsPublicInstance(IPropertySymbol propertySymbol, string name = null)
 {
     return(propertySymbol?.DeclaredAccessibility == Accessibility.Public &&
            !propertySymbol.IsStatic &&
            StringUtility.IsNullOrEquals(name, propertySymbol.Name));
 }