public static Modifiers GetNodeModifiers(DNode dn) { Modifiers m = Modifiers.None; if (dn.ContainsAttribute(DTokens.Abstract)) m |= Modifiers.Abstract; if (dn.ContainsAttribute(DTokens.Const)) m |= Modifiers.Const; if (dn.ContainsAttribute(DTokens.Extern)) m |= Modifiers.Extern; if (dn.ContainsAttribute(DTokens.Package)) m |= Modifiers.Internal; if (dn.ContainsAttribute(DTokens.Override)) m |= Modifiers.Override; if (dn.ContainsAttribute(DTokens.Private)) m |= Modifiers.Private; if (dn.ContainsAttribute(DTokens.Protected)) m |= Modifiers.Protected; if (dn.ContainsAttribute(DTokens.Public)) m |= Modifiers.Public; if (dn.ContainsAttribute(DTokens.Final)) m |= Modifiers.Sealed; if (dn.ContainsAttribute(DTokens.Static)) m |= Modifiers.Static; if (dn.ContainsAttribute(DTokens.Volatile)) m |= Modifiers.Volatile; return m; }
static bool CheckForProtectedAttribute(DNode dn, IBlockNode scope) { if(!dn.ContainsAttribute(DTokens.Protected) || dn.NodeRoot == scope.NodeRoot) return true; while(scope!=null) { if(dn == scope || dn.Parent == scope) return true; scope = scope.Parent as IBlockNode; } return false; }
public override void VisitDNode(DNode n) { if (n.NameHash == DTokens.IncompleteIdHash) { if (n.ContainsAttribute(DTokens.Override)) prv = new MethodOverrideCompletionProvider(n, cdgen); else explicitlyNoCompletion = true; halt = true; } else base.VisitDNode (n); }
static bool CanShowMember(DNode dn, IBlockNode scope) { if (dn.ContainsAttribute(DTokens.Deprecated) && CompletionOptions.Instance.HideDeprecatedNodes) return false; // http://dlang.org/attribute.html#ProtectionAttribute if (dn.ContainsAttribute(DTokens.Private)) return dn.NodeRoot == scope.NodeRoot; else if (dn.ContainsAttribute(DTokens.Package)) return dn.NodeRoot is DModule && ModuleNameHelper.ExtractPackageName((dn.NodeRoot as DModule).ModuleName) == ModuleNameHelper.ExtractPackageName((scope.NodeRoot as DModule).ModuleName); return CheckForProtectedAttribute(dn, scope); }