From ca7e25fe5b14df2993ccfa88a266e9d6cc762469 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sat, 28 Feb 2009 19:27:29 +0000 Subject: [PATCH] Fixed SD2-1524: Reference to a method hiding a base class event resolved incorrectly. Add Subversion "Get lock..." command. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3826 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/ICSharpCode.Svn.addin | 5 +++++ .../Src/Commands/ProjectBrowserCommands.cs | 8 +++++++ .../Project/Src/Gui/SvnGuiWrapper.cs | 5 +++++ src/Main/Base/Test/NRefactoryResolverTests.cs | 22 +++++++++++++++++++ .../Project/Src/MemberLookupHelper.cs | 5 ++--- .../Src/ReflectionLayer/DomPersistence.cs | 3 ++- 6 files changed, 44 insertions(+), 4 deletions(-) diff --git a/src/AddIns/Misc/SubversionAddIn/Project/ICSharpCode.Svn.addin b/src/AddIns/Misc/SubversionAddIn/Project/ICSharpCode.Svn.addin index fed49ab1c2..ae2d88f888 100644 --- a/src/AddIns/Misc/SubversionAddIn/Project/ICSharpCode.Svn.addin +++ b/src/AddIns/Misc/SubversionAddIn/Project/ICSharpCode.Svn.addin @@ -125,6 +125,11 @@ label = "${res:AddIns.Subversion.RemoveFromIgnoreList}" class = "ICSharpCode.Svn.Commands.UnignoreCommand"/> + + + (program, "base.KeyDown", 4); + Assert.AreEqual("Form.KeyDown", mrr.ResolvedMember.FullyQualifiedName); + + var mgrr = Resolve(program, "this.KeyDown", 4); + Assert.AreEqual("Test.KeyDown", mgrr.GetMethodIfSingleOverload().FullyQualifiedName); + } } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs index 23ffa7e264..88dc7db1d1 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs @@ -135,7 +135,6 @@ namespace ICSharpCode.SharpDevelop.Dom // base most member => most derived member //Dictionary overrideDict = new Dictionary(); - bool handledNonMethod = false; HashSet handledMethods = new HashSet(new SignatureComparer()); Dictionary overrideMethodDict = new Dictionary(new SignatureComparer()); IMember nonMethodOverride = null; @@ -171,8 +170,8 @@ namespace ICSharpCode.SharpDevelop.Dom } } } else { - if (!handledNonMethod) { - handledNonMethod = true; + // non-methods are only available if they aren't hidden by something else + if (allResults.Count == 0) { results.Add(nonMethodOverride ?? m); } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs index f8ebc0631d..cefea697b9 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs +++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs @@ -70,7 +70,8 @@ namespace ICSharpCode.SharpDevelop.Dom public ReflectionProjectContent LoadProjectContent(string cacheFileName) { - using (FileStream fs = new FileStream(cacheFileName, FileMode.Open, FileAccess.Read)) { + using (FileStream fs = new FileStream(cacheFileName, FileMode.Open, FileAccess.Read, + FileShare.Read | FileShare.Delete, 4096, FileOptions.SequentialScan)) { return LoadProjectContent(fs); } }