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
case "internal": case "internal":
case "sealed": case "sealed":
case "override": case "override":
case "partial":
case "async": case "async":
declarationBegin = j; declarationBegin = j;
break; break;

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

@ -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 public class EntityCompletionData : CompletionData, IEntityCompletionData
{ {
#region IEntityCompletionData implementation #region IEntityCompletionData implementation
@ -237,12 +250,12 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
public ICompletionData CreateNewOverrideCompletionData (int declarationBegin, ICSharpCode.NRefactory.TypeSystem.IUnresolvedTypeDefinition type, ICSharpCode.NRefactory.TypeSystem.IMember m) 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) 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) public ICompletionData CreateImportCompletionData(IType type, bool useFullName)

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

@ -489,7 +489,7 @@ class Test
} }
[Test()] [Test]
public void ForeachInKeywordTest () public void ForeachInKeywordTest ()
{ {
CodeCompletionBugTests.CombinedProviderTest ( CodeCompletionBugTests.CombinedProviderTest (
@ -507,6 +507,32 @@ class Test
Assert.IsNotNull (provider.Find ("in"), "keyword 'in' not found."); 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