Пример #1
0
 public static AST.TypeMemberModifiers ConvertVisibilityBack(ModifierEnum modifier)
 {
     AST.TypeMemberModifiers r = AST.TypeMemberModifiers.None;
     if ((modifier & ModifierEnum.Public) == ModifierEnum.Public)
     {
         r |= AST.TypeMemberModifiers.Public;
     }
     if ((modifier & ModifierEnum.Protected) == ModifierEnum.Protected)
     {
         r |= AST.TypeMemberModifiers.Protected;
     }
     if ((modifier & ModifierEnum.Internal) == ModifierEnum.Internal)
     {
         r |= AST.TypeMemberModifiers.Internal;
     }
     if ((modifier & ModifierEnum.Private) == ModifierEnum.Private)
     {
         r |= AST.TypeMemberModifiers.Private;
     }
     return(r);
 }
Пример #2
0
        B.TypeMemberModifiers ConvertModifier(AttributedNode node, B.TypeMemberModifiers defaultVisibility)
        {
            Modifiers m = node.Modifier;

            B.TypeMemberModifiers r = B.TypeMemberModifiers.None;
            if ((m & Modifiers.Private) != 0)
            {
                r |= B.TypeMemberModifiers.Private;
            }
            if ((m & Modifiers.Internal) != 0)
            {
                r |= B.TypeMemberModifiers.Internal;
            }
            if ((m & Modifiers.Public) != 0)
            {
                r |= B.TypeMemberModifiers.Public;
            }
            if ((m & Modifiers.Protected) != 0)
            {
                r |= B.TypeMemberModifiers.Protected;
            }
            if (r == B.TypeMemberModifiers.None)
            {
                r = defaultVisibility;
            }

            if ((m & Modifiers.Abstract) != 0)
            {
                r |= B.TypeMemberModifiers.Abstract;
            }
            if ((m & Modifiers.Virtual) != 0)
            {
                r |= B.TypeMemberModifiers.Virtual;
            }
            if ((m & Modifiers.Sealed) != 0)
            {
                r |= B.TypeMemberModifiers.Final;
            }
            if ((m & Modifiers.Static) != 0)
            {
                r |= B.TypeMemberModifiers.Static;
            }
            else if (currentType != null && currentType.IsStatic)
            {
                if (!(node is TypeDeclaration))
                {
                    r |= B.TypeMemberModifiers.Static;
                }
            }
            if ((m & Modifiers.Override) != 0)
            {
                r |= B.TypeMemberModifiers.Override;
            }
            if ((m & Modifiers.ReadOnly) != 0 && !(node is PropertyDeclaration))
            {
                r |= B.TypeMemberModifiers.Final;
            }
            if ((m & Modifiers.Const) != 0)
            {
                r |= B.TypeMemberModifiers.Final | B.TypeMemberModifiers.Static;
            }
            if ((m & Modifiers.New) != 0)
            {
                AddError(node, "shadowing is not supported");
            }
            if ((m & Modifiers.Partial) != 0)
            {
                r |= B.TypeMemberModifiers.Partial;
            }
            if ((m & Modifiers.Extern) != 0)
            {
                // not necessary in Boo
            }
            if ((m & Modifiers.Volatile) != 0)
            {
                AddError(node, "Volatile modifier is not supported");
            }
            if ((m & Modifiers.Unsafe) != 0)
            {
                AddError(node, "Unsafe modifier is not supported");
            }
            if ((m & Modifiers.Overloads) != 0)
            {
                // not necessary in Boo
            }
            if ((m & Modifiers.WithEvents) != 0)
            {
                // not necessary in Boo
            }
            return(r);
        }
Пример #3
0
        B.TypeMemberModifiers ConvertModifier(AttributedNode node, B.TypeMemberModifiers defaultVisibility)
        {
            Modifiers m = node.Modifier;

            B.TypeMemberModifiers r = B.TypeMemberModifiers.None;
            if ((m & Modifiers.Private) != 0)
            {
                r |= B.TypeMemberModifiers.Private;
            }
            if ((m & Modifiers.Internal) != 0)
            {
                r |= B.TypeMemberModifiers.Internal;
            }
            if ((m & Modifiers.Public) != 0)
            {
                r |= B.TypeMemberModifiers.Public;
            }
            if ((m & Modifiers.Protected) != 0)
            {
                r |= B.TypeMemberModifiers.Protected;
            }
            if (r == B.TypeMemberModifiers.None)
            {
                r = defaultVisibility;
            }

            if ((m & Modifiers.Abstract) != 0)
            {
                r |= B.TypeMemberModifiers.Abstract;
            }
            if ((m & Modifiers.Virtual) != 0)
            {
                r |= B.TypeMemberModifiers.Virtual;
            }
            if ((m & Modifiers.Sealed) != 0)
            {
                r |= B.TypeMemberModifiers.Final;
            }
            if ((m & Modifiers.Static) != 0)
            {
                r |= B.TypeMemberModifiers.Static;
            }
            else if (currentType != null && currentType.IsStatic)
            {
                if (!(node is TypeDeclaration))
                {
                    r |= B.TypeMemberModifiers.Static;
                }
            }
            if ((m & Modifiers.Override) != 0)
            {
                r |= B.TypeMemberModifiers.Override;
            }
            if ((m & Modifiers.ReadOnly) != 0 && !(node is PropertyDeclaration))
            {
                r |= B.TypeMemberModifiers.Final;
            }
            if ((m & Modifiers.Const) != 0)
            {
                r |= B.TypeMemberModifiers.Final | B.TypeMemberModifiers.Static;
            }
            if ((m & Modifiers.New) != 0)
            {
                AddError(node, "shadowing is not supported");
            }
            if ((m & Modifiers.Partial) != 0)
            {
                r |= B.TypeMemberModifiers.Partial;
            }
            if ((m & Modifiers.Extern) != 0)
            {
                // not necessary in Boo
            }
            if ((m & Modifiers.Volatile) != 0)
            {
                AddError(node, "Volatile modifier is not supported");
            }
            if ((m & Modifiers.Unsafe) != 0)
            {
                AddError(node, "Unsafe modifier is not supported");
            }
            if ((m & Modifiers.Overloads) != 0)
            {
                // not necessary in Boo
            }
            if ((m & Modifiers.WithEvents) != 0)
            {
                // not necessary in Boo
            }
            if ((m & Modifiers.Default) != 0)
            {
                ParametrizedNode parametrizedNode = node as ParametrizedNode;
                string           name             = null;
                if (parametrizedNode != null)
                {
                    name = parametrizedNode.Name;
                }
                else
                {
                    AddError(node, "Default modifier is not supported on this member.");
                }
                if (name != null && currentType != null)
                {
                    currentType.Attributes.Add(MakeAttribute("System.Reflection.DefaultMember", new B.StringLiteralExpression(name)));
                }
            }
            return(r);
        }