Author: marek
Date: 2005-11-03 15:10:51 -0500 (Thu, 03 Nov 2005)
New Revision: 52524

Modified:
   trunk/mcs/mcs/ChangeLog
   trunk/mcs/mcs/class.cs
Log:
2005-11-03  Marek Safar  <[EMAIL PROTECTED]>

        Fix #75969.
        * class.cs (PartialContainer.EmitType): Customized to emit
        security attributes.
        (ClassPart.ApplyAttributeBuilder): Transform security attribute
        for partial classes.

Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2005-11-03 20:08:05 UTC (rev 52523)
+++ trunk/mcs/mcs/ChangeLog     2005-11-03 20:10:51 UTC (rev 52524)
@@ -1,5 +1,13 @@
 2005-11-03  Marek Safar  <[EMAIL PROTECTED]>
 
+       Fix #75969.
+       * class.cs (PartialContainer.EmitType): Customized to emit
+       security attributes.
+       (ClassPart.ApplyAttributeBuilder): Transform security attribute
+       for partial classes.
+
+2005-11-03  Marek Safar  <[EMAIL PROTECTED]>
+
        Fix #76599.
        * expression.cs (ElementAccess.DoResolveLValue): Fixed buffer
        access has to be fixed.

Modified: trunk/mcs/mcs/class.cs
===================================================================
--- trunk/mcs/mcs/class.cs      2005-11-03 20:08:05 UTC (rev 52523)
+++ trunk/mcs/mcs/class.cs      2005-11-03 20:10:51 UTC (rev 52524)
@@ -2133,7 +2133,7 @@
                ///   Emits the code, this step is performed after all
                ///   the types, enumerations, constructors
                /// </summary>
-               public void EmitType ()
+               public virtual void EmitType ()
                {
                        if (OptAttributes != null)
                                OptAttributes.Emit (ec, this);
@@ -2547,6 +2547,7 @@
                public readonly int OriginalModFlags;
                public readonly int AllowedModifiers;
                public readonly TypeAttributes DefaultTypeAttributes;
+               public ListDictionary DeclarativeSecurity;
 
                static PartialContainer Create (NamespaceEntry ns, 
TypeContainer parent,
                                                MemberName member_name, int 
mod_flags, Kind kind)
@@ -2672,6 +2673,17 @@
                        this.OriginalModFlags = mod;
                }
 
+               public override void EmitType ()
+               {
+                       base.EmitType ();
+
+                       if (DeclarativeSecurity != null) {
+                               foreach (DictionaryEntry de in 
DeclarativeSecurity) {
+                                       TypeBuilder.AddDeclarativeSecurity 
((SecurityAction)de.Key, (PermissionSet)de.Value);
+                               }
+                       }
+               }
+
                public override PendingImplementation GetPendingImplementations 
()
                {
                        return PendingImplementation.GetPendingImplementations 
(this);
@@ -2709,6 +2721,19 @@
                        this.ModFlags = Modifiers.Check (pc.AllowedModifiers, 
mod, accmods, pc.MemberName.Location);
                }
 
+               public override void ApplyAttributeBuilder (Attribute a, 
CustomAttributeBuilder cb)
+               {
+                       if (a.Type.IsSubclassOf 
(TypeManager.security_attr_type) && a.CheckSecurityActionValidity (false)) {
+                               if (PartialContainer.DeclarativeSecurity == 
null)
+                                       PartialContainer.DeclarativeSecurity = 
new ListDictionary ();
+
+                               a.ExtractSecurityPermissionSet 
(PartialContainer.DeclarativeSecurity);
+                               return;
+                       }
+
+                       base.ApplyAttributeBuilder (a, cb);
+               }
+
                public override PendingImplementation GetPendingImplementations 
()
                {
                        return PartialContainer.Pending;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to