Author: marek
Date: 2005-05-11 08:29:54 -0400 (Wed, 11 May 2005)
New Revision: 44386

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

        Fix #74863.
        
        * class.cs (ConstructorInitializer.GetOverloadedConstructor): Removed.
        (Constructor.GetObsoleteAttribute): Implemented correctly.


Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2005-05-11 11:48:29 UTC (rev 44385)
+++ trunk/mcs/mcs/ChangeLog     2005-05-11 12:29:54 UTC (rev 44386)
@@ -1,3 +1,10 @@
+2005-05-11  Marek Safar  <[EMAIL PROTECTED]>
+
+       Fix #74863.
+       
+       * class.cs (ConstructorInitializer.GetOverloadedConstructor): Removed.
+       (Constructor.GetObsoleteAttribute): Implemented correctly.
+
 2005-05-10  Martin Baulig  <[EMAIL PROTECTED]>
 
        * support.cs (ReflectionParameters.ParameterModifier): Use

Modified: trunk/mcs/mcs/class.cs
===================================================================
--- trunk/mcs/mcs/class.cs      2005-05-11 11:48:29 UTC (rev 44385)
+++ trunk/mcs/mcs/class.cs      2005-05-11 12:29:54 UTC (rev 44386)
@@ -4130,66 +4130,6 @@
                                        Invocation.EmitCall (ec, true, false, 
ec.GetThis (loc), base_constructor, argument_list, loc);
                        }
                }
-
-               /// <summary>
-               /// Method search for base ctor. (We do not cache it).
-               /// </summary>
-               Constructor GetOverloadedConstructor (TypeContainer tc)
-               {
-                       if (tc.InstanceConstructors == null)
-                               return null;
-
-                       foreach (Constructor c in tc.InstanceConstructors) {
-                               if (Arguments == null) {
-                                       if (c.ParameterTypes.Length == 0)
-                                               return c;
-
-                                       continue;
-                               }
-
-                               bool ok = true;
-
-                               int count = c.ParameterInfo.Count;
-                               if ((count > 0) &&
-                                   c.ParameterInfo.ParameterModifier (count - 
1) == Parameter.Modifier.PARAMS) {
-                                       for (int i = 0; i < count-1; i++)
-                                               if (c.ParameterTypes [i] != 
((Argument)Arguments [i]).Type) {
-                                                       ok = false;
-                                                       break;
-                                               }
-                               } else {
-                                       if (c.ParameterTypes.Length != 
Arguments.Count)
-                                               continue;
-
-                                       for (int i = 0; i < Arguments.Count; 
++i)
-                                               if (c.ParameterTypes [i] != 
((Argument)Arguments [i]).Type) {
-                                                       ok = false;
-                                                       break;
-                                               }
-                               }
-
-                               if (!ok)
-                                       continue;
-
-                               return c;
-                       }
-
-                       return null;
-               }
-
-               //TODO: implement caching when it will be necessary
-               public virtual void CheckObsoleteAttribute (TypeContainer tc, 
Location loc)
-               {
-                       Constructor ctor = GetOverloadedConstructor (tc);
-                       if (ctor == null)
-                               return;
-
-                       ObsoleteAttribute oa = ctor.GetObsoleteAttribute (tc);
-                       if (oa == null)
-                               return;
-
-                       AttributeTester.Report_ObsoleteMessage (oa, 
ctor.GetSignatureForError (), loc);
-               }
        }
 
        public class ConstructorBaseInitializer : ConstructorInitializer {
@@ -4197,24 +4137,6 @@
                        base (argument_list, pars, l)
                {
                }
-
-               public override void CheckObsoleteAttribute(TypeContainer tc, 
Location loc) {
-                       if (base_constructor == null)
-                               return;
-
-                       TypeContainer type_ds = TypeManager.LookupTypeContainer 
(tc.TypeBuilder.BaseType);
-                       if (type_ds == null) {
-                               ObsoleteAttribute oa = 
AttributeTester.GetMemberObsoleteAttribute (base_constructor);
-
-                               if (oa != null)
-                                       AttributeTester.Report_ObsoleteMessage 
(oa, TypeManager.CSharpSignature (base_constructor), loc);
-
-                               return;
-                       }
-
-                       base.CheckObsoleteAttribute (type_ds, loc);
-               }
-
        }
 
        public class ConstructorThisInitializer : ConstructorInitializer {
@@ -4474,10 +4396,9 @@
                                }
                        }
                        if (Initializer != null) {
-                               if (GetObsoleteAttribute (Parent) == null && 
Parent.GetObsoleteAttribute (Parent) == null)
-                                       Initializer.CheckObsoleteAttribute 
(Parent, Location);
-                               else
+                               if (GetObsoleteAttribute () != null || 
Parent.GetObsoleteAttribute (Parent) != null)
                                        ec.TestObsoleteMethodUsage = false;
+
                                Initializer.Emit (ec);
                        }
                        
@@ -4574,7 +4495,7 @@
 
                public ObsoleteAttribute GetObsoleteAttribute ()
                {
-                       return null;
+                       return GetObsoleteAttribute (Parent);
                }
 
                public bool IsExcluded(EmitContext ec)

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

Reply via email to