Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Karlaš <david.karlas@xamarin.com>2014-06-05 09:21:20 +0400
committerDavid Karlaš <david.karlas@xamarin.com>2014-06-05 09:21:20 +0400
commite6ce1e656cbc026d80a998addccd3d337519292d (patch)
tree7ef760529044fc79ea9d1ef0b603c5e41dcabe1b
parent6da0a7bac9064e1056e4d4ebfc54e7baf2dd8db8 (diff)
Fixing parameter code completion after using '>' e.g. if(a>b)Method(
-rw-r--r--ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs7
-rw-r--r--ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs19
2 files changed, 20 insertions, 6 deletions
diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs
index 0b9f664f..e5919834 100644
--- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs
+++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs
@@ -208,7 +208,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
var bracketStack = new Stack<int> ();
var lex = new MiniLexer (text);
- char lastChar = '0';
bool failed = lex.Parse ((ch, off) => {
if (lex.IsInString || lex.IsInChar || lex.IsInVerbatimString || lex.IsInSingleComment || lex.IsInMultiLineComment || lex.IsInPreprocessorDirective)
return false;
@@ -226,10 +225,9 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
chevronStack.Push (startOffset + off);
break;
case '>':
- if (lastChar == '=')
- break;
+ //Don't abort if we don't have macthing '<' for '>' it could be if (i > 0) Foo($
if (chevronStack.Count == 0) {
- return true;
+ return false;
}
chevronStack.Pop ();
break;
@@ -252,7 +250,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
bracketStack.Pop ();
break;
}
- lastChar = ch;
return false;
});
if (failed)
diff --git a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs
index cfd484f0..f1d8fe9d 100644
--- a/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs
+++ b/ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs
@@ -1265,7 +1265,6 @@ class NUnitTestClass {
/// <summary>
/// Bug 12824 - Invalid argument intellisense inside lambda
/// </summary>
- [Ignore("Parser bug.")]
[Test]
public void TestBug12824 ()
{
@@ -1285,5 +1284,23 @@ public class MyEventArgs
string name = provider.Data.First().FullName;
Assert.AreEqual ("System.Exception..ctor", name);
}
+
+ [Test]
+ public void TestAfterGreaterSign ()
+ {
+ var provider = CreateProvider (@"
+class Test
+{
+ static void Foo (int num) {}
+ public static void Main (string[] args)
+ {
+ int i = 0;
+ if (i > 0)
+ Foo ($
+ }
+}");
+ Assert.AreEqual (1, provider.Count);
+ Assert.AreEqual (1, provider.GetParameterCount (0));
+ }
}
} \ No newline at end of file