internal static Accessibility GetDeclaredAccessibility(this BaseFieldDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            Requires.NotNull(syntax, nameof(syntax));
            Requires.NotNull(semanticModel, nameof(semanticModel));

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            if (syntax.IsKind(SyntaxKind.FieldDeclaration) || syntax.IsKind(SyntaxKind.EventFieldDeclaration))
            {
                return(Accessibility.Private);
            }

            VariableDeclaratorSyntax firstVariable = syntax.Declaration?.Variables.FirstOrDefault();

            if (firstVariable == null)
            {
                return(Accessibility.NotApplicable);
            }

            ISymbol declaredSymbol = semanticModel.GetDeclaredSymbol(firstVariable, cancellationToken);

            return(declaredSymbol?.DeclaredAccessibility ?? Accessibility.NotApplicable);
        }
        internal static Accessibility GetDeclaredAccessibility(this BaseTypeDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            if (syntax == null)
            {
                throw new ArgumentNullException(nameof(syntax));
            }

            if (semanticModel == null)
            {
                throw new ArgumentNullException(nameof(semanticModel));
            }

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            if (!syntax.Modifiers.Any(SyntaxKind.PartialKeyword))
            {
                BaseTypeDeclarationSyntax enclosingType = syntax.Parent as BaseTypeDeclarationSyntax;
                return(enclosingType == null ? Accessibility.Internal : Accessibility.Private);
            }

            INamedTypeSymbol declaredSymbol = semanticModel.GetDeclaredSymbol(syntax, cancellationToken);

            return(declaredSymbol?.DeclaredAccessibility ?? Accessibility.NotApplicable);
        }
Esempio n. 3
0
        internal static Accessibility GetDeclaredAccessibility(this BasePropertyDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            Requires.NotNull(syntax, nameof(syntax));
            Requires.NotNull(semanticModel, nameof(semanticModel));

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            PropertyDeclarationSyntax propertyDeclarationSyntax = syntax as PropertyDeclarationSyntax;

            if (propertyDeclarationSyntax != null)
            {
                if (propertyDeclarationSyntax.ExplicitInterfaceSpecifier == null)
                {
                    return(Accessibility.Private);
                }
                else
                {
                    return(Accessibility.Public);
                }
            }

            IndexerDeclarationSyntax indexerDeclarationSyntax = syntax as IndexerDeclarationSyntax;

            if (indexerDeclarationSyntax != null)
            {
                if (indexerDeclarationSyntax.ExplicitInterfaceSpecifier == null)
                {
                    return(Accessibility.Private);
                }
                else
                {
                    return(Accessibility.Public);
                }
            }

            EventDeclarationSyntax eventDeclarationSyntax = syntax as EventDeclarationSyntax;

            if (eventDeclarationSyntax != null)
            {
                if (eventDeclarationSyntax.ExplicitInterfaceSpecifier == null)
                {
                    return(Accessibility.Private);
                }
                else
                {
                    return(Accessibility.Public);
                }
            }

            ISymbol declaredSymbol = semanticModel.GetDeclaredSymbol(syntax, cancellationToken);

            return(declaredSymbol?.DeclaredAccessibility ?? Accessibility.NotApplicable);
        }
Esempio n. 4
0
        internal static Accessibility GetDeclaredAccessibility(this DelegateDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            Requires.NotNull(syntax, nameof(syntax));
            Requires.NotNull(semanticModel, nameof(semanticModel));

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            return(!(syntax.Parent is BaseTypeDeclarationSyntax) ? Accessibility.Internal : Accessibility.Private);
        }
        internal static Accessibility GetDeclaredAccessibility(this AccessorDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            Requires.NotNull(syntax, nameof(syntax));
            Requires.NotNull(semanticModel, nameof(semanticModel));

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            ISymbol declaredSymbol = semanticModel.GetDeclaredSymbol(syntax, cancellationToken);

            return(declaredSymbol?.DeclaredAccessibility ?? Accessibility.NotApplicable);
        }
        internal static Accessibility GetDeclaredAccessibility(this BaseMethodDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            if (syntax == null)
            {
                throw new ArgumentNullException(nameof(syntax));
            }

            if (semanticModel == null)
            {
                throw new ArgumentNullException(nameof(semanticModel));
            }

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            if (syntax.Modifiers.Any(SyntaxKind.PartialKeyword))
            {
                return(Accessibility.Private);
            }

            MethodDeclarationSyntax methodDeclarationSyntax = syntax as MethodDeclarationSyntax;

            if (methodDeclarationSyntax != null)
            {
                if (methodDeclarationSyntax.ExplicitInterfaceSpecifier == null)
                {
                    return(Accessibility.Private);
                }
                else
                {
                    return(Accessibility.Public);
                }
            }

            if (syntax.IsKind(SyntaxKind.ConstructorDeclaration))
            {
                return(Accessibility.Private);
            }

            IMethodSymbol declaredSymbol = semanticModel.GetDeclaredSymbol(syntax, cancellationToken);

            return(declaredSymbol?.DeclaredAccessibility ?? Accessibility.NotApplicable);
        }
        internal static Accessibility GetDeclaredAccessibility(this BaseTypeDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            Requires.NotNull(syntax, nameof(syntax));
            Requires.NotNull(semanticModel, nameof(semanticModel));

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            if (!syntax.Modifiers.Any(SyntaxKind.PartialKeyword))
            {
                return(!(syntax.Parent is BaseTypeDeclarationSyntax) ? Accessibility.Internal : Accessibility.Private);
            }

            INamedTypeSymbol declaredSymbol = semanticModel.GetDeclaredSymbol(syntax, cancellationToken);

            return(declaredSymbol?.DeclaredAccessibility ?? Accessibility.NotApplicable);
        }
        internal static Accessibility GetDeclaredAccessibility(this DelegateDeclarationSyntax syntax, SemanticModel semanticModel, CancellationToken cancellationToken)
        {
            if (syntax == null)
            {
                throw new ArgumentNullException(nameof(syntax));
            }

            if (semanticModel == null)
            {
                throw new ArgumentNullException(nameof(semanticModel));
            }

            AccessLevel accessLevel = GetAccessLevel(syntax.Modifiers);

            if (accessLevel != AccessLevel.NotSpecified)
            {
                return(accessLevel.ToAccessibility());
            }

            BaseTypeDeclarationSyntax enclosingType = syntax.Parent as BaseTypeDeclarationSyntax;

            return(enclosingType == null ? Accessibility.Internal : Accessibility.Private);
        }