make line-endings uniform
[mono.git] / mcs / mcs / decl.cs
index ab80f02ed4bcc266f0a95de567ea25a1abaec29c..6bbec398fe873cbc96eebce9830831691164c74c 100644 (file)
@@ -1158,16 +1158,14 @@ namespace Mono.CSharp {
                                the_parent = null;
 
                        int start = 0;
-                       TypeParameter[] parent_params = null;
-                       if ((the_parent != null) && the_parent.IsGeneric) {
-                               parent_params = the_parent.initialize_type_params ();
-                               start = parent_params != null ? parent_params.Length : 0;
-                       }
-
                        ArrayList list = new ArrayList ();
-                       if (parent_params != null)
+                       if (the_parent != null && the_parent.IsGeneric) {
+                               // FIXME: move generics info out of DeclSpace
+                               TypeParameter[] parent_params = the_parent.PartialContainer.TypeParameters;
+                               start = parent_params.Length;
                                list.AddRange (parent_params);
-
+                       }
                        int count = type_params != null ? type_params.Length : 0;
                        for (int i = 0; i < count; i++) {
                                TypeParameter param = type_params [i];
@@ -2081,6 +2079,33 @@ namespace Mono.CSharp {
                        
                        return null;
                }
+
+               public MemberInfo FindBaseEvent (Type invocationType, string name)
+               {
+                       ArrayList applicable;
+                       if (method_hash != null)
+                               applicable = (ArrayList) method_hash [name];
+                       else
+                               applicable = (ArrayList) member_hash [name];
+                       
+                       if (applicable == null)
+                               return null;
+
+                       //
+                       // Walk the chain of events, starting from the top.
+                       //
+                       for (int i = applicable.Count - 1; i >= 0; i--) 
+                       {
+                               CacheEntry entry = (CacheEntry) applicable [i];
+                               if ((entry.EntryType & EntryType.Event) == 0)
+                                       continue;
+                               
+                               EventInfo ei = (EventInfo)entry.Member;
+                               return ei.GetAddMethod (true);
+                       }
+
+                       return null;
+               }
                
                //
                // This finds the method or property for us to override. invocationType is the type where