* mcs/flowanalysis.cs (UsageVector.MergeOrigins): Reorganize.
[mono.git] / mcs / gmcs / pending.cs
index 1ec720e4e6c7a76b69b636c492b741acfe1c9aeb..79c0fb5e24f3469ef33c96939545ae16571cee89 100644 (file)
@@ -179,16 +179,15 @@ namespace Mono.CSharp {
                                
                                int j = 0;
                                foreach (MethodInfo m in mi){
-                                       pending_implementations [i].args [j] = TypeManager.NoTypes;
+                                       pending_implementations [i].args [j] = Type.EmptyTypes;
                                        pending_implementations [i].mods [j] = null;
 
                                        // If there is a previous error, just ignore
                                        if (m == null)
                                                continue;
 
-                                       pending_implementations [i].args [j] = TypeManager.GetArgumentTypes (m);
-
                                        ParameterData pd = TypeManager.GetParameterData (m);
+                                       pending_implementations [i].args [j] = pd.Types;
                                        
                                        if (pd.Count > 0){
                                                Parameter.Modifier [] pm = new Parameter.Modifier [pd.Count];
@@ -221,8 +220,8 @@ namespace Mono.CSharp {
                                foreach (MemberInfo m in abstract_methods){
                                        MethodInfo mi = (MethodInfo) m;
                                        
-                                       Type [] types = TypeManager.GetArgumentTypes (mi);
                                        ParameterData pd = TypeManager.GetParameterData (mi);
+                                       Type [] types = pd.Types;
                                        
                                        pending_implementations [i].args [j] = types;
                                        pending_implementations [i].mods [j] = null;
@@ -532,7 +531,7 @@ namespace Mono.CSharp {
                {
                        MethodSignature ms;
                        
-                       Type [] args = TypeManager.GetArgumentTypes (mi);
+                       Type [] args = TypeManager.GetParameterData (mi).Types;
                        ms = new MethodSignature (mi.Name, mi.ReturnType, args);
                        MemberList list = TypeContainer.FindMembers (
                                container.TypeBuilder.BaseType, MemberTypes.Method | MemberTypes.Property,
@@ -552,6 +551,9 @@ namespace Mono.CSharp {
                        //
                        MethodInfo base_method = (MethodInfo) list [0];
 
+                       if (base_method.DeclaringType.IsInterface)
+                               return false;
+
                        if (!base_method.IsAbstract && !base_method.IsVirtual)
                                DefineProxy (iface_type, base_method, mi, args);
 
@@ -585,7 +587,7 @@ namespace Mono.CSharp {
                                                        pending_implementations [i].need_proxy [j];
 
                                                if (need_proxy != null) {
-                                                       Type [] args = TypeManager.GetArgumentTypes (mi);
+                                                       Type [] args = TypeManager.GetParameterData (mi).Types;
                                                        DefineProxy (type, need_proxy, mi, args);
                                                        continue;
                                                }