Browse Source

[CodeCompletion] Fixed code completion bug.

newNRvisualizers
mkrueger 14 years ago
parent
commit
a524d045ff
  1. 5
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 55
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionAccessibleTests.cs

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

@ -444,7 +444,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -444,7 +444,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (token == "=") {
int j = tokenIndex;
string prevToken = GetPreviousToken(ref j, false);
if (prevToken == "=" || prevToken == "+" || prevToken == "-") {
if (prevToken == "=" || prevToken == "+" || prevToken == "-" || prevToken == "!") {
token = prevToken + token;
tokenIndex = j;
}
@ -481,14 +481,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -481,14 +481,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return null;
case "=":
case "==":
case "!=":
GetPreviousToken(ref tokenIndex, false);
var expressionOrVariableDeclaration = GetExpressionAt(tokenIndex);
if (expressionOrVariableDeclaration == null) {
return null;
}
resolveResult = ResolveExpression(expressionOrVariableDeclaration);
if (resolveResult == null) {
return null;
}

55
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionAccessibleTests.cs

@ -1183,24 +1183,71 @@ class TestClass @@ -1183,24 +1183,71 @@ class TestClass
public void TestEnumInBinaryOperatorExpression ()
{
CodeCompletionBugTests.CombinedProviderTest (
@"
@"
[Flags]
public enum TestEnum { A, B, C}
class TestClass
{
public void Foo ()
{
$TestEnum test = TestEnum.A | T$
}
}", provider => {
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
});
}
[Test()]
public void TestEnumComparison ()
{
var provider = CodeCompletionBugTests.CreateProvider(
@"
public enum TestEnum { A, B, C}
class TestClass
{
public static TestEnum A (int i, int j, string s) {}
public void Foo ()
{
$TestEnum test = TestEnum.A | T$
$if (A(1,2,""foo"") == $
}
}", provider => {
}");
Assert.IsFalse(provider.AutoCompleteEmptyMatch);
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
});
}
[Test()]
public void TestEnumComparisonCase2 ()
{
var provider = CodeCompletionBugTests.CreateProvider(
@"
public enum TestEnum { A, B, C}
class TestClass
{
public static TestEnum A (int i, int j, string s) {}
public void Foo ()
{
$if (A(1,2,""foo"") != $
}
}");
Assert.IsFalse(provider.AutoCompleteEmptyMatch);
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
}
[Test()]
public void TestPrimimitiveTypeCompletionString ()
{

Loading…
Cancel
Save