Browse Source

Fixed bug in "Find references": MemberLookupHelper.IsSimilarMember could return true when comparing a field with a local variable.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3818 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
e397b87c6b
  1. 17
      src/Main/Base/Test/MemberLookupHelperTests.cs
  2. 10
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs

17
src/Main/Base/Test/MemberLookupHelperTests.cs

@ -20,6 +20,7 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -20,6 +20,7 @@ namespace ICSharpCode.SharpDevelop.Tests
{
IProjectContent msc; // = ProjectContentRegistry.Mscorlib;
IProjectContent swf; // = ProjectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms");
DefaultClass dummyClass;
IMethod methodForGenericCalls;
[TestFixtureSetUp]
@ -32,10 +33,10 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -32,10 +33,10 @@ namespace ICSharpCode.SharpDevelop.Tests
DefaultProjectContent dpc = new DefaultProjectContent();
dpc.ReferencedContents.Add(msc);
DefaultCompilationUnit cu = new DefaultCompilationUnit(dpc);
DefaultClass c = new DefaultClass(cu, "DummyClass");
cu.Classes.Add(c);
methodForGenericCalls = new DefaultMethod(c, "DummyMethod");
c.Methods.Add(methodForGenericCalls);
dummyClass = new DefaultClass(cu, "DummyClass");
cu.Classes.Add(dummyClass);
methodForGenericCalls = new DefaultMethod(dummyClass, "DummyMethod");
dummyClass.Methods.Add(methodForGenericCalls);
}
IReturnType DictionaryRT {
@ -428,5 +429,13 @@ namespace ICSharpCode.SharpDevelop.Tests @@ -428,5 +429,13 @@ namespace ICSharpCode.SharpDevelop.Tests
Assert.AreEqual(1, properties.Where(m=>m.Name=="CanRaiseEvents").Count());
Assert.AreEqual(1, methods.Where(m=>m.Name=="AdjustFormScrollbars").Count());
}
[Test]
public void LocalVariableAndFieldAreNotSimilarMembers()
{
IField field = new DefaultField(dummyClass.DefaultReturnType, "Test", ModifierEnum.None, DomRegion.Empty, dummyClass);
IField local = new DefaultField.LocalVariableField(dummyClass.DefaultReturnType, "Test", DomRegion.Empty, dummyClass);
Assert.IsFalse(MemberLookupHelper.IsSimilarMember(local, field));
}
}
}

10
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs

@ -808,6 +808,16 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -808,6 +808,16 @@ namespace ICSharpCode.SharpDevelop.Dom
return false;
}
}
IField f1 = member1 as IField;
IField f2 = member2 as IField;
if (f1 != null || f2 != null) {
if (f1 != null && f2 != null) {
if (f1.IsLocalVariable != f2.IsLocalVariable || f1.IsParameter != f2.IsParameter)
return false;
} else {
return false;
}
}
return true;
}

Loading…
Cancel
Save