2004-09-04 Marek Safar <marek.safar@seznam.cz>
authorMarek Safar <marek.safar@gmail.com>
Sat, 4 Sep 2004 10:32:08 +0000 (10:32 -0000)
committerMarek Safar <marek.safar@gmail.com>
Sat, 4 Sep 2004 10:32:08 +0000 (10:32 -0000)
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.

svn path=/trunk/mcs/; revision=33337

mcs/mcs/ChangeLog
mcs/mcs/enum.cs
mcs/mcs/expression.cs

index 26ddf5bee54e3cbbd5bc4f6998bd8542b1801cdd..b2b4d1fb6177dd616c90d64b1675f45e0ee31f50 100755 (executable)
@@ -1,3 +1,13 @@
+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
index ff4a454005d2270b07d44b1a4b874ea2e9ec37b8..b40a23ea1d20425106187e0f24f76ba09dde04ea 100755 (executable)
@@ -76,23 +76,6 @@ namespace Mono.CSharp {
                        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 ());
@@ -799,28 +782,5 @@ namespace Mono.CSharp {
                {
                        // 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;
-               }
        }
 }
index 7513410c09b88eb9a1b36b872ddd728d34b40daf..2d34749aec33fefbea17a5d4d2a7e96b5483550a 100755 (executable)
@@ -7128,7 +7128,12 @@ namespace Mono.CSharp {
                                                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);
                                                        }