Author: marek
Date: 2005-04-27 02:53:12 -0400 (Wed, 27 Apr 2005)
New Revision: 43640

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

        Fix #74378
        * class.cs (EmitFieldInitializers): Use FieldExpr in initializer.
        
        * ecore.cs (FieldExpr): Add a new ctor with in_initializer.
        (FieldExpr.DoResolve): Obsolete members are ignored for field
        initializers.

Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2005-04-27 06:31:02 UTC (rev 43639)
+++ trunk/mcs/mcs/ChangeLog     2005-04-27 06:53:12 UTC (rev 43640)
@@ -1,3 +1,12 @@
+2005-04-27  Marek Safar  <[EMAIL PROTECTED]>
+
+       Fix #74378
+       * class.cs (EmitFieldInitializers): Use FieldExpr in initializer.
+       
+       * ecore.cs (FieldExpr): Add a new ctor with in_initializer.
+       (FieldExpr.DoResolve): Obsolete members are ignored for field
+       initializers.
+       
 2005-04-26  Marek Safar  <[EMAIL PROTECTED]>
 
        * attribute.cs (AreOverloadedMethodParamsClsCompliant): Add array

Modified: trunk/mcs/mcs/class.cs
===================================================================
--- trunk/mcs/mcs/class.cs      2005-04-27 06:31:02 UTC (rev 43639)
+++ trunk/mcs/mcs/class.cs      2005-04-27 06:53:12 UTC (rev 43640)
@@ -883,7 +883,7 @@
                                        return false;
 
                                Location l = f.Location;
-                               FieldExpr fe = new FieldExpr (f.FieldBuilder, 
l);
+                               FieldExpr fe = new FieldExpr (f.FieldBuilder, 
l, true);
                                fe.InstanceExpression = instance_expr;
                                ExpressionStatement a = new Assign (fe, e, l);
 

Modified: trunk/mcs/mcs/ecore.cs
===================================================================
--- trunk/mcs/mcs/ecore.cs      2005-04-27 06:31:02 UTC (rev 43639)
+++ trunk/mcs/mcs/ecore.cs      2005-04-27 06:53:12 UTC (rev 43640)
@@ -2661,6 +2661,13 @@
 
                LocalTemporary temp;
                bool prepared;
+               bool in_initializer;
+
+               public FieldExpr (FieldInfo fi, Location l, bool 
in_initializer):
+                       this (fi, l)
+               {
+                       this.in_initializer = in_initializer;
+               }
                
                public FieldExpr (FieldInfo fi, Location l)
                {
@@ -2829,18 +2836,20 @@
                                        return null;
                        }
 
-                       ObsoleteAttribute oa;
-                       FieldBase f = TypeManager.GetField (FieldInfo);
-                       if (f != null) {
-                               oa = f.GetObsoleteAttribute (f.Parent);
-                               if (oa != null)
-                                       AttributeTester.Report_ObsoleteMessage 
(oa, f.GetSignatureForError (), loc);
+                       if (!in_initializer) {
+                               ObsoleteAttribute oa;
+                               FieldBase f = TypeManager.GetField (FieldInfo);
+                               if (f != null) {
+                                       oa = f.GetObsoleteAttribute (f.Parent);
+                                       if (oa != null)
+                                               
AttributeTester.Report_ObsoleteMessage (oa, f.GetSignatureForError (), loc);
                                 
-                        // To be sure that type is external because we do not 
register generated fields
-                        } else if (!(FieldInfo.DeclaringType is TypeBuilder)) 
{                                
-                               oa = AttributeTester.GetMemberObsoleteAttribute 
(FieldInfo);
-                               if (oa != null)
-                                       AttributeTester.Report_ObsoleteMessage 
(oa, TypeManager.GetFullNameSignature (FieldInfo), loc);
+                                       // To be sure that type is external 
because we do not register generated fields
+                               } else if (!(FieldInfo.DeclaringType is 
TypeBuilder)) {                                
+                                       oa = 
AttributeTester.GetMemberObsoleteAttribute (FieldInfo);
+                                       if (oa != null)
+                                               
AttributeTester.Report_ObsoleteMessage (oa, TypeManager.GetFullNameSignature 
(FieldInfo), loc);
+                               }
                        }
 
                        if (ec.CurrentAnonymousMethod != null){

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

Reply via email to