+2004-09-04 Marek Safar <marek.safar@seznam.cz>
+
+ Fixed cs0619-37.cs, cs0619-38.cs
+
+ * enum.cs (GetObsoleteAttribute): Removed.
+
+ * expression.cs (MemberAccess.DoResolve): Test for [Obsolete]
+ on Enum member is double staged. The first is tested member
+ and then enum.
+
2004-09-04 Marek Safar <marek.safar@seznam.cz>
Fixed #56986, #63631, #65231
Emit ();
}
- // TODO: caching would be usefull
- public ObsoleteAttribute GetObsoleteAttribute (EmitContext ec)
- {
- if (OptAttributes == null)
- return null;
-
- Attribute obsolete_attr = OptAttributes.Search (TypeManager.obsolete_attribute_type, ec);
- if (obsolete_attr == null)
- return null;
-
- ObsoleteAttribute obsolete = obsolete_attr.GetObsoleteAttribute (ec.DeclSpace);
- if (obsolete == null)
- return null;
-
- return obsolete;
- }
-
public override string GetSignatureForError()
{
return String.Concat (parent_enum.GetSignatureForError (), '.', base.GetSignatureForError ());
{
// UnderlyingType is never obsolete
}
-
- /// <summary>
- /// Returns ObsoleteAttribute for both enum type and enum member
- /// </summary>
- public ObsoleteAttribute GetObsoleteAttribute (EmitContext ec, string identifier)
- {
- if ((caching_flags & Flags.Obsolete_Undetected) == 0 && (caching_flags & Flags.Obsolete) == 0) {
- return null;
- }
-
- ObsoleteAttribute oa = GetObsoleteAttribute (ec.DeclSpace);
- if (oa != null)
- return oa;
-
- EnumMember em = (EnumMember)defined_names [identifier];
- oa = em.GetObsoleteAttribute (ec);
-
- if (oa == null)
- return null;
-
- caching_flags |= Flags.Obsolete;
- return oa;
- }
}
}
object value = en.LookupEnumValue (ec, Identifier, loc);
if (value != null){
- ObsoleteAttribute oa = en.GetObsoleteAttribute (ec, Identifier);
+ MemberCore mc = en.GetDefinition (Identifier);
+ ObsoleteAttribute oa = mc.GetObsoleteAttribute (en);
+ if (oa != null) {
+ AttributeTester.Report_ObsoleteMessage (oa, mc.GetSignatureForError (), Location);
+ }
+ oa = en.GetObsoleteAttribute (en);
if (oa != null) {
AttributeTester.Report_ObsoleteMessage (oa, en.GetSignatureForError (), Location);
}