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