Author: mkrueger
Date: 2007-11-08 02:46:28 -0500 (Thu, 08 Nov 2007)
New Revision: 89177

Modified:
   trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
   
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.CodeGeneration/CodeRefactorer.cs
Log:
* MonoDevelop.Projects.CodeGeneration/CodeRefactorer.cs: Fixed "Bug
  340006 - "Implement Interface" does not work correctly".

Modified: trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog   2007-11-08 
03:31:44 UTC (rev 89176)
+++ trunk/monodevelop/Core/src/MonoDevelop.Projects/ChangeLog   2007-11-08 
07:46:28 UTC (rev 89177)
@@ -1,3 +1,8 @@
+2007-11-08  Mike Krüger <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.Projects.CodeGeneration/CodeRefactorer.cs: Fixed "Bug 
340006 -
+         "Implement Interface" does not work correctly".
+
 2007-11-06  Mike Krüger <[EMAIL PROTECTED]> 
 
        * MonoDevelop.Projects.Parser/PersistentProperty.cs,

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.CodeGeneration/CodeRefactorer.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.CodeGeneration/CodeRefactorer.cs
       2007-11-08 03:31:44 UTC (rev 89176)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Projects/MonoDevelop.Projects.CodeGeneration/CodeRefactorer.cs
       2007-11-08 07:46:28 UTC (rev 89177)
@@ -143,6 +143,21 @@
                        return name;
                }
                
+               static bool Equals (ParameterCollection col1, 
ParameterCollection col2)
+               {
+                       if (col1 == null && col2 == null)
+                               return true;
+                       if (col1 == null  || col2 == null)
+                               return false;
+                       if (col1.Count != col2.Count)
+                               return false;
+                       for (int i = 0; i < col1.Count; i++) {
+                               if (col1[i].ReturnType.FullyQualifiedName != 
col2[i].ReturnType.FullyQualifiedName)
+                                       return false;
+                       }
+                       return true;
+               }
+               
                public void ImplementInterface (IParseInformation pinfo, IClass 
klass, IClass iface, bool explicitly, IClass declaringClass, IReturnType 
hintReturnType)
                {
                        RefactorerContext gctx = GetGeneratorContext (klass);
@@ -190,7 +205,7 @@
                                IMethod method = iface.Methods[i];
                                
                                for (j = 0, alreadyImplemented = false; j < 
klass.Methods.Count&& !alreadyImplemented; j++) {
-                                       if (klass.Methods[j].Name == 
method.Name && klass.Methods[j].IsExplicitDeclaration == explicitly) 
+                                       if (klass.Methods[j].Name == 
method.Name && Equals (klass.Methods[j].Parameters, method.Parameters) && 
klass.Methods[j].IsExplicitDeclaration == explicitly) 
                                                alreadyImplemented = 
!explicitly || iface.FullyQualifiedName == 
klass.Methods[j].ExplicitDeclaration.FullyQualifiedName;
                                }
                                

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to