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