Browse Source

Fixed parameter test case.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
510d58a28b
  1. 26
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 1
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs
  3. 79
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs

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

@ -423,7 +423,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -423,7 +423,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
AddKeywords (dataList, linqKeywords);
return dataList.Result;
}
if (currentType != null && currentType.Kind == TypeKind.Enum)
return HandleEnumContext ();
@ -446,7 +445,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -446,7 +445,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return null;
if (!(Char.IsWhiteSpace (prevCh) || allowedChars.IndexOf (prevCh) >= 0))
return null;
// Do not pop up completion on identifier identifier (should be handled by keyword completion).
tokenIndex = offset - 1;
token = GetPreviousToken (ref tokenIndex, false);
@ -487,14 +485,36 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -487,14 +485,36 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
}
if (n != null && n.Parent is InvocationExpression) {
var invokeResult = ResolveExpression (identifierStart.Item1, ((InvocationExpression)n.Parent).Target, identifierStart.Item3);
var invokeParent = (InvocationExpression)n.Parent;
var invokeResult = ResolveExpression (identifierStart.Item1, invokeParent.Target, identifierStart.Item3);
var mgr = invokeResult != null ? invokeResult.Item1 as MethodGroupResolveResult : null;
if (mgr != null) {
int idx = 0;
foreach (var arg in invokeParent.Arguments) {
if (arg == n)
break;
idx++;
}
foreach (var method in mgr.Methods) {
if (idx < method.Parameters.Count && method.Parameters[idx].Type.Kind == TypeKind.Delegate) {
AutoSelect = false;
AutoCompleteEmptyMatch = false;
}
foreach (var p in method.Parameters) {
contextList.AddVariable (p);
}
}
idx++;
foreach (var list in mgr.GetExtensionMethods ()) {
foreach (var method in list) {
if (idx < method.Parameters.Count && method.Parameters[idx].Type.Kind == TypeKind.Delegate) {
AutoSelect = false;
AutoCompleteEmptyMatch = false;
}
}
}
}
}

1
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/NameContextTests.cs

@ -122,6 +122,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion @@ -122,6 +122,7 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
Assert.IsTrue (provider == null || provider.Count == 0, "provider should be empty.");
}
[Ignore("MCS TODO!")]
[Test()]
public void TestCatchExceptionName ()
{

79
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs

@ -174,8 +174,11 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion @@ -174,8 +174,11 @@ namespace ICSharpCode.NRefactory.CSharp.CodeCompletion
public IParameterDataProvider CreateMethodDataProvider (ICSharpCode.NRefactory.CSharp.Resolver.MethodGroupResolveResult par1)
{
var methods = new List<IMethod> (par1.Methods);
foreach (var list in par1.GetExtensionMethods ())
methods.AddRange (list);
return new Provider () {
Data = par1.Methods
Data = methods
};
}
@ -527,6 +530,65 @@ class TestClass @@ -527,6 +530,65 @@ class TestClass
Assert.AreEqual (1, provider.OverloadCount);
}
/// Bug 3307 - Chained linq methods do not work correctly
[Test()]
public void TestBug3307 ()
{
var provider = CreateProvider (
@"using System;
using System.Linq;
class TestClass
{
public static void Main (string[] args)
{
$args.Select ($
}
}");
Assert.IsNotNull (provider, "provider was not created.");
Assert.AreEqual (6, provider.OverloadCount);
}
[Test()]
public void TestBug3307FollowUp ()
{
var provider = CodeCompletionBugTests.CreateProvider (
@"using System;
using System.Linq;
public class MainClass
{
static void TestMe (Action<int> act)
{
}
public static void Main (string[] args)
{
$TestMe (x$
}
}");
Assert.IsNotNull (provider, "provider was not created.");
Assert.IsFalse (provider.AutoSelect, "auto select enabled !");
}
[Test()]
public void TestBug3307FollowUp2 ()
{
var provider = CodeCompletionBugTests.CreateProvider (
@"using System;
using System.Linq;
public class MainClass
{
public static void Main (string[] args)
{
$args.Select (x$
}
}");
Assert.IsNotNull (provider, "provider was not created.");
Assert.IsFalse (provider.AutoSelect, "auto select enabled !");
}
[Test()]
public void TestConstructor ()
{
@ -694,5 +756,20 @@ class TestClass @@ -694,5 +756,20 @@ class TestClass
Assert.IsNotNull (provider, "provider was not created.");
Assert.AreEqual (1, provider.OverloadCount);
}
[Ignore("MCS TODO!")]
[Test()]
public void TestTypeParameterInBaseType ()
{
IParameterDataProvider provider = CreateProvider (
@"using System;
namespace Test
{
$class A : Tuple<$
}");
Assert.IsNotNull (provider, "provider was not created.");
Assert.AreEqual (16, provider.OverloadCount);
}
}
}
Loading…
Cancel
Save