Browse Source

Fixed inconsistency between 'override' and 'partial' completion.

The begin of the declaration now always includes these keywords.
pull/32/merge
Mike Krüger 13 years ago
parent
commit
921c1f6e20
  1. 1
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 17
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs
  3. 28
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/KeywordTests.cs

1
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -1980,6 +1980,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1980,6 +1980,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
case "internal":
case "sealed":
case "override":
case "partial":
case "async":
declarationBegin = j;
break;

17
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

@ -138,6 +138,19 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion @@ -138,6 +138,19 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
}
}
public class OverrideCompletionData : CompletionData
{
public int DeclarationBegin {
get;
set;
}
public OverrideCompletionData (string text, int declarationBegin) : base(text)
{
this.DeclarationBegin = declarationBegin;
}
}
public class EntityCompletionData : CompletionData, IEntityCompletionData
{
#region IEntityCompletionData implementation
@ -237,12 +250,12 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion @@ -237,12 +250,12 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
public ICompletionData CreateNewOverrideCompletionData (int declarationBegin, ICSharpCode.NRefactory.TypeSystem.IUnresolvedTypeDefinition type, ICSharpCode.NRefactory.TypeSystem.IMember m)
{
return new CompletionData (m.Name);
return new OverrideCompletionData (m.Name, declarationBegin);
}
public ICompletionData CreateNewPartialCompletionData (int declarationBegin, IUnresolvedTypeDefinition type, IUnresolvedMember m)
{
return new CompletionData (m.Name);
return new OverrideCompletionData (m.Name, declarationBegin);
}
public ICompletionData CreateImportCompletionData(IType type, bool useFullName)

28
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/KeywordTests.cs

@ -489,7 +489,7 @@ class Test @@ -489,7 +489,7 @@ class Test
}
[Test()]
[Test]
public void ForeachInKeywordTest ()
{
CodeCompletionBugTests.CombinedProviderTest (
@ -507,6 +507,32 @@ class Test @@ -507,6 +507,32 @@ class Test
Assert.IsNotNull (provider.Find ("in"), "keyword 'in' not found.");
});
}
[Test]
public void OverrideCompletionDeclarationBeginTest ()
{
var start = @"class A { public virtual void FooBar () {} }
class Test : A
{
";
var provider = CodeCompletionBugTests.CreateProvider (start + "$override $\n}");
var data = provider.Find("FooBar") as CodeCompletionBugTests.TestFactory.OverrideCompletionData;
Assert.AreEqual(start.Length, data.DeclarationBegin);
}
[Test]
public void PartialCompletionDeclarationBeginTest ()
{
var start = @"partial class A { partial void FooBar (); }
partial class A
{
";
var provider = CodeCompletionBugTests.CreateProvider (start + "$partial $\n}");
var data = provider.Find("FooBar") as CodeCompletionBugTests.TestFactory.OverrideCompletionData;
Assert.AreEqual(start.Length, data.DeclarationBegin);
}
}
}

Loading…
Cancel
Save