Browse Source

Fixed failing unit test.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
03407fd54c
  1. 48
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 1
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs
  3. 2
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

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

@ -358,7 +358,19 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -358,7 +358,19 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
if (IsInsideComment () || IsInsideString ())
return null;
var identifierStart = GetExpressionAtCursor ();
if (IsInLinqContext (offset)) {
tokenIndex = offset;
token = GetPreviousToken (ref tokenIndex, false); // token last typed
if (linqKeywords.Contains (token)) {
if (token == "from") // after from no auto code completion.
return null;
return DefaultControlSpaceItems ();
}
var dataList = new CompletionDataWrapper (this);
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';
@ -437,25 +449,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -437,25 +449,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
// result = FindExpression (dom, completionContext, -1);
// if (result == null)
// return null;
// if (IsInLinqContext (result)) {
// tokenIndex = offset;
// token = GetPreviousToken (ref tokenIndex, false); // token last typed
// token = GetPreviousToken (ref tokenIndex, false); // possible linq keyword ?
// triggerWordLength = 1;
//
// if (linqKeywords.Contains (token)) {
// if (token == "from") // after from no auto code completion.
// return null;
// result.Expression = "";
// return CreateCtrlSpaceCompletionData (completionContext, result);
// }
// CompletionDataList dataList = new ProjectDomCompletionDataList ();
// CompletionDataCollector col = new CompletionDataCollector (this, dom, dataList, Document.CompilationUnit, null, new TextLocation (completionContext.TriggerLine, completionContext.TriggerLineOffset));
// foreach (string kw in linqKeywords) {
// col.Add (kw, "md-keyword");
// }
// return dataList;
// } else if (result.ExpressionContext != ExpressionContext.IdentifierExpected) {
// else if (result.ExpressionContext != ExpressionContext.IdentifierExpected) {
// triggerWordLength = 1;
// bool autoSelect = true;
// IType returnType = null;
@ -518,6 +512,18 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -518,6 +512,18 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
return null;
}
bool IsInLinqContext (int offset)
{
string token;
while (null != (token = GetPreviousToken (ref offset, true))) {
if (token == "from")
return true;
if (token == ";")
return false;
}
return false;
}
IEnumerable<ICompletionData> DefaultControlSpaceItems ()
{
@ -1536,7 +1542,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1536,7 +1542,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
baseUnit = ParseStub ("a = b};", false);
expr = baseUnit.GetNodeAt<ArrayInitializerExpression> (location.Line, location.Column - 1);
}
Print (baseUnit);
if (expr == null)
return null;
var member = Unit.GetNodeAt<AttributedNode> (memberLocation);

1
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngineBase.cs

@ -217,6 +217,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -217,6 +217,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
} else {
memberLocation = new TextLocation (1, 1);
}
using (var stream = new System.IO.StringReader (wrapper.ToString ())) {
var parser = new CSharpParser ();
return parser.Parse (stream, wrapInClass ? memberLocation.Line - 2 : 0);

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

@ -2686,7 +2686,7 @@ class MyTest @@ -2686,7 +2686,7 @@ class MyTest
[Test()]
public void TestBug534680 ()
{
CompletionDataList provider = CreateProvider (
CompletionDataList provider = CreateCtrlSpaceProvider (
@"
class Foo
{

Loading…
Cancel
Save