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);
Exemple #2
0
 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;
Exemple #4
0
        /// <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()));
        }
Exemple #5
0
        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);
            }
        }