Browse Source

* CSharpCompletionEngine.cs: Fixed some bugs in global/type context.

* KeywordTests.cs:
* CodeCompletionBugTests.cs: Fixed some bugs in global/type context
newNRvisualizers
Mike Krüger 14 years ago
parent
commit
f5730d5729
  1. 14
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 20
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs
  3. 52
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/KeywordTests.cs

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

@ -370,7 +370,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -370,7 +370,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
AddKeywords (dataList, linqKeywords);
return dataList.Result;
}
if (!(char.IsLetter (completionChar) || completionChar == '_') && (identifierStart == null || !(identifierStart.Item2 is ArrayInitializerExpression)))
return controlSpace ? DefaultControlSpaceItems () : null;
char prevCh = offset > 2 ? document.GetCharAt (offset - 2) : '\0';
@ -388,12 +387,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -388,12 +387,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (!char.IsLetterOrDigit (last) && last != '_')
return null;
}
if (identifierStart == null)
return null;
var contextList = new CompletionDataWrapper (this);
if (identifierStart == null) {
AddContextCompletion (contextList, GetState (), null);
return contextList.Result;
}
CSharpResolver csResolver;
AstNode n = identifierStart.Item2;
var contextList = new CompletionDataWrapper (this);
if (n is ArrayInitializerExpression) {
var initalizerResult = ResolveExpression (identifierStart.Item1, n.Parent, identifierStart.Item3);
if (initalizerResult != null) {
@ -554,6 +554,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -554,6 +554,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
void AddContextCompletion (CompletionDataWrapper wrapper, CSharpResolver state, AstNode node)
{
Console.WriteLine ("!!!!");
if (state == null)
return;
foreach (var variable in state.LocalVariables) {
@ -586,6 +587,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -586,6 +587,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} else if (state.CurrentTypeDefinition != null) {
AddKeywords (wrapper, typeLevelKeywords);
} else {
Console.WriteLine ("3");
AddKeywords (wrapper, globalLevelKeywords);
}
@ -866,7 +868,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -866,7 +868,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
case "static":
wrapper = new CompletionDataWrapper (this);
var state = GetState ();
AddTypesAndNamespaces (wrapper, state, null, m => false);
AddTypesAndNamespaces (wrapper, state, null, null, m => false);
AddKeywords (wrapper, typeLevelKeywords);
AddKeywords (wrapper, primitiveTypesKeywords);
return wrapper.Result;

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

@ -3596,6 +3596,26 @@ public class Test @@ -3596,6 +3596,26 @@ public class Test
Assert.IsNotNull (provider.Find ("C"), "class 'C' not found.");
}
/// <summary>
/// Bug 1744 - [New Resolver] Issues while typing a property
/// </summary>
[Test()]
public void Test1744 ()
{
var provider = CreateProvider (
@"
public class Test
{
$public $
}
");
Assert.IsNotNull (provider, "provider not found.");
Assert.IsNotNull (provider.Find ("void"), "class 'void' not found.");
Assert.IsNotNull (provider.Find ("Test"), "class 'Test' not found.");
Assert.IsNotNull (provider.Find ("System"), "namespace 'System' not found.");
}
[Test()]
public void TestCompletionInTryCatch ()
{

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

@ -86,7 +86,59 @@ void Test (string t) @@ -86,7 +86,59 @@ void Test (string t)
Assert.IsNotNull (provider.Find ("case"), "keyword 'case' not found.");
}
[Test()]
public void ModifierKeywordTest ()
{
var provider = CodeCompletionBugTests.CreateProvider (
@"
$p$
");
Assert.IsNotNull (provider, "provider == null");
Assert.IsNotNull (provider.Find ("public"), "keyword 'public' not found.");
Assert.IsNotNull (provider.Find ("namespace"), "keyword 'namespace' not found.");
}
[Test()]
public void ModifierKeywordTestCtrlSpace ()
{
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
@"
$p$
");
Assert.IsNotNull (provider, "provider == null");
Assert.IsNotNull (provider.Find ("public"), "keyword 'public' not found.");
Assert.IsNotNull (provider.Find ("namespace"), "keyword 'namespace' not found.");
}
[Test()]
public void ModifierKeywordTestCase2 ()
{
var provider = CodeCompletionBugTests.CreateProvider (
@"
class Test
{
$p$
}
");
Assert.IsNotNull (provider, "provider == null");
Assert.IsNotNull (provider.Find ("public"), "keyword 'public' not found.");
Assert.IsNull (provider.Find ("namespace"), "keyword 'namespace' found.");
}
[Test()]
public void ModifierKeywordTestCase2CrtlSpace ()
{
var provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
@"
class Test
{
$p$
}
");
Assert.IsNotNull (provider, "provider == null");
Assert.IsNotNull (provider.Find ("public"), "keyword 'public' not found.");
Assert.IsNull (provider.Find ("namespace"), "keyword 'namespace' found.");
}
}
}

Loading…
Cancel
Save