diff options
author | David Karlaš <david.karlas@xamarin.com> | 2014-06-05 09:21:20 +0400 |
---|---|---|
committer | David Karlaš <david.karlas@xamarin.com> | 2014-06-05 09:21:20 +0400 |
commit | e6ce1e656cbc026d80a998addccd3d337519292d (patch) | |
tree | 7ef760529044fc79ea9d1ef0b603c5e41dcabe1b | |
parent | 6da0a7bac9064e1056e4d4ebfc54e7baf2dd8db8 (diff) |
Fixing parameter code completion after using '>' e.g. if(a>b)Method(
-rw-r--r-- | ICSharpCode.NRefactory.CSharp/Completion/CSharpParameterCompletionEngine.cs | 7 | ||||
-rw-r--r-- | ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/ParameterCompletionTests.cs | 19 |
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 |