Exemple #1
0
        public bool Equals(SymbolSpecification other)
        {
            if (other is null)
            {
                return(false);
            }

            return(ID == other.ID &&
                   Name == other.Name &&
                   ApplicableSymbolKindList.SequenceEqual(other.ApplicableSymbolKindList) &&
                   ApplicableAccessibilityList.SequenceEqual(other.ApplicableAccessibilityList) &&
                   RequiredModifierList.SequenceEqual(other.RequiredModifierList));
        }
Exemple #2
0
        internal bool AppliesTo(ISymbol symbol)
        {
            if (ApplicableSymbolKindList.Any() && !ApplicableSymbolKindList.Any(k => k.AppliesTo(symbol)))
            {
                return(false);
            }

            // Modifiers must match exactly
            if (!RequiredModifierList.All(m => m.MatchesSymbol(symbol)))
            {
                return(false);
            }

            if (ApplicableAccessibilityList.Any() && !ApplicableAccessibilityList.Any(k => k.MatchesSymbol(symbol)))
            {
                return(false);
            }

            return(true);
        }
Exemple #3
0
        internal bool AppliesTo(SymbolKindOrTypeKind kind, DeclarationModifiers modifiers, Accessibility?accessibility)
        {
            if (!ApplicableSymbolKindList.Any(k => k.Equals(kind)))
            {
                return(false);
            }

            var collapsedModifiers = CollapseModifiers(RequiredModifierList);

            if ((modifiers & collapsedModifiers) != collapsedModifiers)
            {
                return(false);
            }

            if (accessibility.HasValue && !ApplicableAccessibilityList.Any(k => k == accessibility))
            {
                return(false);
            }

            return(true);
        }