提交 9f1b8f86 编写于 作者: B Brett Forsgren

Merge pull request #3875 from DanielRosenwasser/triggerCharactersInComments

Ignore signature help trigger characters in comments and strings
......@@ -6,6 +6,7 @@
using Roslyn.Test.Utilities;
using Xunit;
using Microsoft.CodeAnalysis.CSharp;
using System.Linq;
namespace Microsoft.CodeAnalysis.Editor.CSharp.UnitTests.SignatureHelp
{
......@@ -907,6 +908,49 @@ void Foo(int a, int b)
Test(markup, usePreviousCharAsTrigger: true);
}
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public void TestTriggerCharacterInComment01()
{
var markup = @"
class C
{
void Foo(int a)
{
Foo(/*,$$*/);
}
}";
Test(markup, Enumerable.Empty<SignatureHelpTestItem>(), usePreviousCharAsTrigger: true);
}
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public void TestTriggerCharacterInComment02()
{
var markup = @"
class C
{
void Foo(int a)
{
Foo(//,$$
);
}
}";
Test(markup, Enumerable.Empty<SignatureHelpTestItem>(), usePreviousCharAsTrigger: true);
}
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public void TestTriggerCharacterInString01()
{
var markup = @"
class C
{
void Foo(int a)
{
Foo("",$$"");
}
}";
Test(markup, Enumerable.Empty<SignatureHelpTestItem>(), usePreviousCharAsTrigger: true);
}
[Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)]
public void TestTriggerCharacters()
{
......
......@@ -116,7 +116,8 @@ internal static class CommonSignatureHelpUtilities
var token = syntaxFacts.FindTokenOnLeftOfPosition(root, position);
if (triggerReason == SignatureHelpTriggerReason.TypeCharCommand)
{
if (isTriggerToken(token))
if (isTriggerToken(token) &&
!syntaxFacts.IsInNonUserCode(root.SyntaxTree, position, cancellationToken))
{
expression = token.GetAncestor<TSyntax>();
return true;
......
......@@ -41,7 +41,12 @@ public void SetFixture(TWorkspaceFixture workspaceFixture)
/// <param name="usePreviousCharAsTrigger">If true, uses the last character before $$ to trigger sighelp.
/// If false, invokes sighelp explicitly at the cursor location.</param>
/// <param name="sourceCodeKind">The sourcecodekind to run this test on. If null, runs on both regular and script sources.</param>
protected virtual void Test(string markup, IEnumerable<SignatureHelpTestItem> expectedOrderedItemsOrNull = null, bool usePreviousCharAsTrigger = false, SourceCodeKind? sourceCodeKind = null, bool experimental = false)
protected virtual void Test(
string markup,
IEnumerable<SignatureHelpTestItem> expectedOrderedItemsOrNull = null,
bool usePreviousCharAsTrigger = false,
SourceCodeKind? sourceCodeKind = null,
bool experimental = false)
{
if (sourceCodeKind.HasValue)
{
......
......@@ -974,6 +974,30 @@ End Class
", {New SignatureHelpTestItem("System.Collections.Generic.List(Of Integer)(index As Integer) As Integer")})
End Sub
<Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)>
Public Sub TriggerCharacterInComment01()
Dim markup = "
Class C
Sub M(p As String)
M(',$$
End Sub
End Class
"
Test(markup, Enumerable.Empty(Of SignatureHelpTestItem)(), usePreviousCharAsTrigger:=True)
End Sub
<Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)>
Public Sub TriggerCharacterInString01()
Dim markup = "
Class C
Sub M(p As String)
M("",$$""
End Sub
End Class
"
Test(markup, Enumerable.Empty(Of SignatureHelpTestItem)(), usePreviousCharAsTrigger:=True)
End Sub
<Fact, Trait(Traits.Feature, Traits.Features.SignatureHelp)>
Public Sub TestTriggerCharacters()
Dim expectedTriggerCharacters() As Char = {","c, "("c}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册