Skip to content

Commit

Permalink
Merge pull request #58850 from sharwell/single-arg
Browse files Browse the repository at this point in the history
Fix statement completion interaction with argument completion
  • Loading branch information
sharwell authored Jan 13, 2022
2 parents f3013fd + 0bbc3c2 commit 1dd33bb
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Completion;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.Editor.CSharp.CompleteStatement;
using Microsoft.CodeAnalysis.Editor.Implementation.IntelliSense.SignatureHelp;
using Microsoft.CodeAnalysis.Editor.Shared.Utilities;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Text;
using Microsoft.VisualStudio.Commanding;
using Microsoft.VisualStudio.Editor;
Expand All @@ -36,6 +37,7 @@ namespace Microsoft.VisualStudio.LanguageServices.CSharp.Snippets
[Name("CSharp Snippets")]
[Order(After = PredefinedCompletionNames.CompletionCommandHandler)]
[Order(After = Microsoft.CodeAnalysis.Editor.PredefinedCommandHandlerNames.SignatureHelpAfterCompletion)]
[Order(Before = nameof(CompleteStatementCommandHandler))]
[Order(Before = Microsoft.CodeAnalysis.Editor.PredefinedCommandHandlerNames.AutomaticLineEnder)]
internal sealed class SnippetCommandHandler :
AbstractSnippetCommandHandler,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,11 +322,46 @@ public void Method()
VisualStudio.Workspace.WaitForAllAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.SignatureHelp);
VisualStudio.Editor.Verify.CurrentLineText("object.Equals(null$$)", assertCaretPosition: true);

VisualStudio.Editor.SendKeys(';');
VisualStudio.Editor.Verify.CurrentLineText("object.Equals(null);$$", assertCaretPosition: true);
}

/// <summary>
/// Argument completion with exactly one argument.
/// </summary>
[WpfFact]
public void SemicolonWithTabTabCompletion3()
{
SetUpEditor(@"
public class Test
{
private object f;
public void Method(int value)
{$$
}
public void Method2(int value)
{
}
}
");

VisualStudio.Editor.SendKeys(VirtualKey.Enter);
VisualStudio.Editor.SendKeys("this.M2");

VisualStudio.Editor.SendKeys(VirtualKey.Tab);
VisualStudio.Editor.Verify.CurrentLineText("object.Equals(null)$$", assertCaretPosition: true);
VisualStudio.Editor.Verify.CurrentLineText("this.Method2$$", assertCaretPosition: true);

VisualStudio.Editor.SendKeys(VirtualKey.Tab);
VisualStudio.Workspace.WaitForAllAsyncOperations(Helper.HangMitigatingTimeout, FeatureAttribute.SignatureHelp);
VisualStudio.Editor.Verify.CurrentLineText("this.Method2(value$$)", assertCaretPosition: true);

VisualStudio.Editor.SendKeys(';');
VisualStudio.Editor.Verify.CurrentLineText("this.Method2(value);$$", assertCaretPosition: true);
}

[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/56394")]
[WpfFact]
public void SmartBreakLineWithTabTabCompletion1()
{
SetUpEditor(@"
Expand Down Expand Up @@ -365,7 +400,7 @@ public void Method()
", assertCaretPosition: true);
}

[WpfFact(Skip = "https://github.com/dotnet/roslyn/issues/56394")]
[WpfFact]
public void SmartBreakLineWithTabTabCompletion2()
{
SetUpEditor(@"
Expand Down

0 comments on commit 1dd33bb

Please sign in to comment.