예제 #1
0
        public static MemberDecoration GetDecoration(IAccessModifiers accessModifiers,
                                                     TreeNodeEnumerable <IFSharpAttribute> attributes)
        {
            var decoration = MemberDecoration.DefaultValue;
            var modifiers  = new JetHashSet <TokenNodeType>();

            if (accessModifiers != null)
            {
                foreach (var modifier in accessModifiers.Modifiers)
                {
                    modifiers.Add(modifier.GetTokenType());
                }
            }

            if (modifiers.Contains(FSharpTokenType.PUBLIC))
            {
                decoration.Modifiers |= Modifiers.PUBLIC;
            }
            if (modifiers.Contains(FSharpTokenType.INTERNAL))
            {
                decoration.Modifiers |= Modifiers.INTERNAL;
            }
            if (modifiers.Contains(FSharpTokenType.PRIVATE))
            {
                decoration.Modifiers |= Modifiers.PRIVATE;
            }

            foreach (var attr in attributes)
            {
                switch (attr.GetShortName())
                {
                case FSharpImplUtil.AbstractClass:
                    decoration.Modifiers |= Modifiers.ABSTRACT;
                    break;

                case FSharpImplUtil.Sealed:
                    decoration.Modifiers |= Modifiers.SEALED;
                    break;
                }
            }

            return(Normalize(decoration));
        }
예제 #2
0
        public static MemberDecoration GetDecoration(IAccessModifiers accessModifiers,
                                                     TreeNodeEnumerable <IFSharpAttribute> attributes)
        {
            var decoration = MemberDecoration.DefaultValue;
            var modifiers  = new JetHashSet <TokenNodeType>();

            foreach (var modifier in accessModifiers.Modifiers)
            {
                modifiers.Add(modifier.GetTokenType());
            }

            if (modifiers.Contains(FSharpTokenType.PUBLIC))
            {
                decoration.Modifiers |= Modifiers.PUBLIC;
            }
            if (modifiers.Contains(FSharpTokenType.INTERNAL))
            {
                decoration.Modifiers |= Modifiers.INTERNAL;
            }
            if (modifiers.Contains(FSharpTokenType.PRIVATE))
            {
                decoration.Modifiers |= Modifiers.PRIVATE;
            }

            foreach (var attr in attributes)
            {
                var ids = attr.LongIdentifier.Identifiers;
                if (ids.IsEmpty)
                {
                    continue;
                }

                var attributeShortName = ids.Last().GetText().GetAttributeShortName();
                if (attributeShortName.Equals(AbstractClass, StringComparison.Ordinal))
                {
                    decoration.Modifiers |= Modifiers.ABSTRACT;
                    break;
                }
            }
            return(Normalize(decoration));
        }
 public IAccessModifiers SetAccessModifiers(IAccessModifiers param) => null;