Browse Source

Fixed unit test.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
42c0a2d866
  1. 13
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 23
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

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

@ -954,6 +954,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -954,6 +954,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return wrapper.Result;
}
static string GetNameWithParamCount (IMember member)
{
var e = member as IMethod;
if (e == null || e.TypeParameters.Count == 0)
return member.Name;
return e.Name + "`" + e.TypeParameters.Count;
}
void AddVirtuals (Dictionary<string, bool> alreadyInserted, CompletionDataWrapper col, ITypeDefinition type, string modifiers, ITypeDefinition curType, int declarationBegin)
{
if (curType == null)
@ -966,9 +974,10 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -966,9 +974,10 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
continue;
var data = factory.CreateNewOverrideCompletionData (declarationBegin, type, m);
string text = m.ReflectionName; //TODO:correct ?
string text = GetNameWithParamCount (m);
// check if the member is already implemented
bool foundMember = type.Members.Any (cm => cm.ReflectionName /*amb.GetString (ctx, cm, OutputFlags.ClassBrowserEntries)*/ == text);
bool foundMember = type.Members.Any (cm => GetNameWithParamCount (cm) == text);
if (!foundMember && !alreadyInserted.ContainsKey (text)) {
alreadyInserted [text] = true;
data.CompletionCategory = col.GetCompletionCategory (curType);

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

@ -151,7 +151,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion @@ -151,7 +151,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
public ICompletionData CreateNewOverrideCompletionData (int declarationBegin, ICSharpCode.NRefactory.TypeSystem.ITypeDefinition type, ICSharpCode.NRefactory.TypeSystem.IMember m)
{
return new CompletionData (type.Name);
return new CompletionData (m.Name);
}
public System.Collections.Generic.IEnumerable<ICompletionData> CreateCodeTemplateCompletionData ()
@ -1104,27 +1104,22 @@ namespace CCTests @@ -1104,27 +1104,22 @@ namespace CCTests
{
CompletionDataList provider = CreateProvider (
@"
namespace System {
public class Object
{
public virtual int GetHashCode ()
{
}
protected virtual void Finalize ()
{
}
}
}
public class TestMe : System.Object
{
$override $
public override string ToString ()
{
return null;
}
}");
Assert.IsNotNull (provider, "provider not found.");
Assert.AreEqual (1, provider.Count);
Assert.AreEqual (2, provider.Count);
Assert.IsNull (provider.Find ("Finalize"), "method 'Finalize' found, but shouldn't.");
Assert.IsNotNull (provider.Find ("GetHashCode"), "method 'GetHashCode' not found.");
Assert.IsNotNull (provider.Find ("Equals"), "method 'Equals' not found.");
}
/// <summary>
/// Bug 457003 - code completion shows variables out of scope
/// </summary>

Loading…
Cancel
Save