Browse Source

Fixed SD2-788: Duplicate override method in code completion

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1383 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
73f4aa7af9
  1. 2
      src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs
  2. 31
      src/Main/Base/Test/NRefactoryResolverTests.cs

2
src/Main/Base/Project/Src/Dom/Implementations/AbstractDecoration.cs

@ -166,7 +166,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -166,7 +166,7 @@ namespace ICSharpCode.SharpDevelop.Dom
}
public bool IsOverridable {
get {
return (IsOverride || IsVirtual) && !IsSealed;
return (IsOverride || IsVirtual || IsAbstract) && !IsSealed;
}
}
public bool IsNew {

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

@ -845,6 +845,37 @@ class B { @@ -845,6 +845,37 @@ class B {
}
return false;
}
[Test]
public void OverriddenMemberVisibilityTest()
{
string program = @"using System;
public abstract class GrandParent {
protected abstract void OverrideMe();
}
public class Parent: GrandParent {
protected override void OverrideMe() {
}
}
public class Child: Parent {
}
";
ResolveResult result = Resolve(program, "(Child)someVar", 6);
Assert.AreEqual("Child", result.ResolvedType.FullyQualifiedName);
int count = 0;
foreach (IMethod m in result.ResolvedType.GetMethods()) {
if (m.Name == "OverrideMe")
count += 1;
}
Assert.AreEqual(1, count);
count = 0;
foreach (object o in result.GetCompletionData(lastPC)) {
IMethod m = o as IMethod;
if (m != null && m.Name == "OverrideMe")
count += 1;
}
Assert.AreEqual(1, count);
}
#endregion
#region MixedType tests

Loading…
Cancel
Save