Browse Source

Fixed C# expression finder bug for statements like "if (a < b) {}"

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2616 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
ac9f4a917b
  1. 25
      src/Main/Base/Test/CSharpExpressionFinderTests.cs
  2. 4
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs

25
src/Main/Base/Test/CSharpExpressionFinderTests.cs

@ -160,11 +160,18 @@ class Main {
const string program3 = @"using System; using System.Collections.Generic; const string program3 = @"using System; using System.Collections.Generic;
class Main { class Main {
void Method(global::System.Exception ex) { void Method(global::System.Exception ex, int arg) {
if (arg < b) {
} else if (boolVar) {
}
List<string> a = new List<string> a = new
} }
Main() : this() {} Main() : this() {}
Main(int a) : base(a + 3) {} Main(int arg) : base(arg + 3) {
}
}"; }";
[Test] [Test]
@ -193,7 +200,7 @@ class Main {
public void ConstructorCall() public void ConstructorCall()
{ {
FindFull(program3, "this(", "this()", ExpressionContext.BaseConstructorCall); FindFull(program3, "this(", "this()", ExpressionContext.BaseConstructorCall);
FindFull(program3, "base(", "base(a + 3)", ExpressionContext.BaseConstructorCall); FindFull(program3, "base(", "base(arg + 3)", ExpressionContext.BaseConstructorCall);
} }
[Test] [Test]
@ -201,6 +208,18 @@ class Main {
{ {
FindExpr(program3, "using", null, ExpressionContext.Global); FindExpr(program3, "using", null, ExpressionContext.Global);
} }
[Test]
public void ConditionInIfStatement()
{
FindFull(program3, "oolVar)", "boolVar", ExpressionContext.StatementStart);
}
[Test]
public void IdentifierFollowedByLessThan()
{
FindFull(program3, "rg < b", "arg", ExpressionContext.StatementStart);
}
} }
} }

4
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs

@ -526,7 +526,9 @@ namespace ICSharpCode.SharpDevelop.Dom.CSharp
return new ExpressionResult(text.Substring(resultStartOffset, resultEndOffset - resultStartOffset), resultContext); return new ExpressionResult(text.Substring(resultStartOffset, resultEndOffset - resultStartOffset), resultContext);
} }
} else { } else {
resultEndOffset = LocationToOffset(token.EndLocation); if (frame.bracketType != '<') {
resultEndOffset = LocationToOffset(token.EndLocation);
}
} }
} }
lastToken = token.kind; lastToken = token.kind;

Loading…
Cancel
Save