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)); }
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); }
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); }