public static SymbolVisibilityGroup GetSymbolVisibilityGroupOption( this AnalyzerOptions options, DiagnosticDescriptor rule, SyntaxTree tree, Compilation compilation, SymbolVisibilityGroup defaultValue, CancellationToken cancellationToken) => options.GetFlagsEnumOptionValue(EditorConfigOptionNames.ApiSurface, rule, tree, compilation, defaultValue, cancellationToken);
public static SymbolVisibilityGroup GetSymbolVisibilityGroupOption( this AnalyzerOptions options, DiagnosticDescriptor rule, ISymbol symbol, Compilation compilation, SymbolVisibilityGroup defaultValue, CancellationToken cancellationToken) => options.GetSymbolVisibilityGroupOption(rule, symbol.Locations[0].SourceTree, compilation, defaultValue, cancellationToken);
public static SymbolVisibilityGroup GetSymbolVisibilityGroupOption( this AnalyzerOptions options, DiagnosticDescriptor rule, ISymbol symbol, Compilation compilation, SymbolVisibilityGroup defaultValue, CancellationToken cancellationToken) => TryGetSyntaxTreeForOption(symbol, out var tree) ? options.GetSymbolVisibilityGroupOption(rule, tree, compilation, defaultValue, cancellationToken) : defaultValue;
/// <summary> /// Returns true if the given symbol has required visibility based on options: /// 1. If user has explicitly configured candidate <see cref="SymbolVisibilityGroup"/> in editor config options and /// given symbol's visibility is one of the candidate visibilites. /// 2. Otherwise, if user has not configured visibility, and given symbol's visibility /// matches the given default symbol visibility. /// </summary> public static bool MatchesConfiguredVisibility( this ISymbol symbol, AnalyzerOptions options, DiagnosticDescriptor rule, CancellationToken cancellationToken, SymbolVisibilityGroup defaultRequiredVisibility = SymbolVisibilityGroup.Public) { var allowedVisibilities = options.GetSymbolVisibilityGroupOption(rule, defaultRequiredVisibility, cancellationToken); return(allowedVisibilities.Contains(symbol.GetResultantVisibility())); }
public static bool Contains(this SymbolVisibilityGroup symbolVisibilityGroup, SymbolVisibility symbolVisibility) { return(symbolVisibility switch { SymbolVisibility.Public => (symbolVisibilityGroup & SymbolVisibilityGroup.Public) != 0, SymbolVisibility.Internal => (symbolVisibilityGroup & SymbolVisibilityGroup.Internal) != 0, SymbolVisibility.Private => (symbolVisibilityGroup & SymbolVisibilityGroup.Private) != 0, _ => throw new ArgumentOutOfRangeException(nameof(symbolVisibility), symbolVisibility, null), });
public static bool Contains(this SymbolVisibilityGroup symbolVisibilityGroup, SymbolVisibility symbolVisibility) { switch (symbolVisibility) { case SymbolVisibility.Public: return((symbolVisibilityGroup & SymbolVisibilityGroup.Public) != 0); case SymbolVisibility.Internal: return((symbolVisibilityGroup & SymbolVisibilityGroup.Internal) != 0); case SymbolVisibility.Private: return((symbolVisibilityGroup & SymbolVisibilityGroup.Private) != 0); default: throw new ArgumentOutOfRangeException(nameof(symbolVisibility), symbolVisibility, null); } }