From ac9f4a917b800e373a9f57c00162c0659293f43d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Thu, 19 Jul 2007 08:26:07 +0000 Subject: [PATCH] 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 --- .../Base/Test/CSharpExpressionFinderTests.cs | 25 ++++++++++++++++--- .../Project/Src/CSharp/ExpressionFinder.cs | 4 ++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/Main/Base/Test/CSharpExpressionFinderTests.cs b/src/Main/Base/Test/CSharpExpressionFinderTests.cs index af7171e986..b1a27cd360 100644 --- a/src/Main/Base/Test/CSharpExpressionFinderTests.cs +++ b/src/Main/Base/Test/CSharpExpressionFinderTests.cs @@ -160,11 +160,18 @@ class Main { const string program3 = @"using System; using System.Collections.Generic; class Main { - void Method(global::System.Exception ex) { + void Method(global::System.Exception ex, int arg) { + if (arg < b) { + + } else if (boolVar) { + + } List a = new } Main() : this() {} - Main(int a) : base(a + 3) {} + Main(int arg) : base(arg + 3) { + + } }"; [Test] @@ -193,7 +200,7 @@ class Main { public void ConstructorCall() { FindFull(program3, "this(", "this()", ExpressionContext.BaseConstructorCall); - FindFull(program3, "base(", "base(a + 3)", ExpressionContext.BaseConstructorCall); + FindFull(program3, "base(", "base(arg + 3)", ExpressionContext.BaseConstructorCall); } [Test] @@ -201,6 +208,18 @@ class Main { { 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); + } } } diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs index c100ca2daf..379a130594 100644 --- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/CSharp/ExpressionFinder.cs +++ b/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); } } else { - resultEndOffset = LocationToOffset(token.EndLocation); + if (frame.bracketType != '<') { + resultEndOffset = LocationToOffset(token.EndLocation); + } } } lastToken = token.kind;