Browse Source

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
shortcuts
Daniel Grunwald 17 years ago
parent
commit
ca7e25fe5b
  1. 5
      src/AddIns/Misc/SubversionAddIn/Project/ICSharpCode.Svn.addin
  2. 8
      src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/ProjectBrowserCommands.cs
  3. 5
      src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/SvnGuiWrapper.cs
  4. 22
      src/Main/Base/Test/NRefactoryResolverTests.cs
  5. 5
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/MemberLookupHelper.cs
  6. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

5
src/AddIns/Misc/SubversionAddIn/Project/ICSharpCode.Svn.addin

@ -125,6 +125,11 @@ @@ -125,6 +125,11 @@
label = "${res:AddIns.Subversion.RemoveFromIgnoreList}"
class = "ICSharpCode.Svn.Commands.UnignoreCommand"/>
</Condition>
<Condition name = "SubversionState" state = "Modified;Normal" item = "File">
<MenuItem id = "SvnLock"
label = "${res:AddIns.Subversion.Lock}..."
class = "ICSharpCode.Svn.Commands.LockCommand"/>
</Condition>
<Condition name = "SubversionState" state = "Modified;Normal" item = "File">
<MenuItem id = "SvnBlame"
label = "${res:AddIns.Subversion.Blame}..."

8
src/AddIns/Misc/SubversionAddIn/Project/Src/Commands/ProjectBrowserCommands.cs

@ -229,6 +229,14 @@ namespace ICSharpCode.Svn.Commands @@ -229,6 +229,14 @@ namespace ICSharpCode.Svn.Commands
}
}
public class LockCommand : SubversionCommand
{
protected override void Run(string filename)
{
SvnGuiWrapper.Lock(filename, null);
}
}
public class BlameCommand : SubversionCommand
{
protected override void Run(string filename)

5
src/AddIns/Misc/SubversionAddIn/Project/Src/Gui/SvnGuiWrapper.cs

@ -204,6 +204,11 @@ namespace ICSharpCode.Svn @@ -204,6 +204,11 @@ namespace ICSharpCode.Svn
Proc("copy", fileName, callback);
}
public static void Lock(string fileName, MethodInvoker callback)
{
Proc("lock", fileName, callback);
}
public static void Blame(string fileName, MethodInvoker callback)
{
Proc("blame", fileName, callback);

22
src/Main/Base/Test/NRefactoryResolverTests.cs

@ -2762,5 +2762,27 @@ class Test { @@ -2762,5 +2762,27 @@ class Test {
Assert.AreEqual("System.Nullable.Value", rr.ResolvedMember.FullyQualifiedName);
Assert.AreEqual("System.Int32", rr.ResolvedMember.ReturnType.FullyQualifiedName);
}
[Test]
public void MethodHidesEvent()
{
// see SD2-1542
string program = @"using System;
class Test : Form {
public Test() {
}
void KeyDown(object sender, EventArgs e) {}
}
class Form {
public event EventHandler KeyDown;
}";
var mrr = Resolve<MemberResolveResult>(program, "base.KeyDown", 4);
Assert.AreEqual("Form.KeyDown", mrr.ResolvedMember.FullyQualifiedName);
var mgrr = Resolve<MethodGroupResolveResult>(program, "this.KeyDown", 4);
Assert.AreEqual("Test.KeyDown", mgrr.GetMethodIfSingleOverload().FullyQualifiedName);
}
}
}

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

@ -135,7 +135,6 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -135,7 +135,6 @@ namespace ICSharpCode.SharpDevelop.Dom
// base most member => most derived member
//Dictionary<IMember, IMember> overrideDict = new Dictionary<IMember, IMember>();
bool handledNonMethod = false;
HashSet<IMethod> handledMethods = new HashSet<IMethod>(new SignatureComparer());
Dictionary<IMethod, IMethod> overrideMethodDict = new Dictionary<IMethod, IMethod>(new SignatureComparer());
IMember nonMethodOverride = null;
@ -171,8 +170,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -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);
}
}

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ReflectionLayer/DomPersistence.cs

@ -70,7 +70,8 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -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);
}
}

Loading…
Cancel
Save