public override SyntaxNode GetEffectiveParentForAttribute(SyntaxNode node) { if (node.HasAncestor<BaseFieldDeclarationSyntax>()) { return node.GetAncestor<BaseFieldDeclarationSyntax>().Declaration.Variables.FirstOrDefault(); } else if (node.HasAncestor<ParameterSyntax>()) { return node.GetAncestor<ParameterSyntax>(); } else { return node.Parent; } }
private EnvDTE.vsCMAccess GetDefaultAccessibility(SyntaxNode node) { if (node is EnumMemberDeclarationSyntax) { return EnvDTE.vsCMAccess.vsCMAccessPublic; } if (node is BaseFieldDeclarationSyntax || node is BaseMethodDeclarationSyntax || node is BasePropertyDeclarationSyntax) { // Members of interfaces and enums are public, while all other // members are private. if (node.HasAncestor<InterfaceDeclarationSyntax>() || node.HasAncestor<EnumDeclarationSyntax>()) { return EnvDTE.vsCMAccess.vsCMAccessPublic; } else { return EnvDTE.vsCMAccess.vsCMAccessPrivate; } } if (node is BaseTypeDeclarationSyntax || node is DelegateDeclarationSyntax) { // Types declared within types are private by default, // otherwise internal. if (node.HasAncestor<BaseTypeDeclarationSyntax>()) { return EnvDTE.vsCMAccess.vsCMAccessPrivate; } else { return EnvDTE.vsCMAccess.vsCMAccessProject; } } if (node is AccessorDeclarationSyntax) { return GetAccess(node.FirstAncestorOrSelf<BasePropertyDeclarationSyntax>()); } throw Exceptions.ThrowEFail(); }