提交 cb159d1f 编写于 作者: M Martin Strecker

Use ISyntaxFactsService.IsEntirelyWithinStringOrCharOrNumericLiteral

上级 83230deb
......@@ -183,6 +183,11 @@ using System.Reflection;
Await AssertCompletionListHasItems("[assembly: InternalsVisibleTo(assemblyName: ""$$, AllInternalsVisible = true)]", True)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Async Function AssertCompletionListHasNoItems_IfNumberIsEntered() As Task
Await AssertCompletionListHasItems("[assembly: InternalsVisibleTo(1$$2)]", False)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Async Function AssertCompletionListHasNoItems_IfNotInternalsVisibleToAttribute() As Task
Await AssertCompletionListHasItems("[assembly: AssemblyVersion(""$$"")]", False)
......
......@@ -182,6 +182,11 @@ Imports System.Reflection
Await AssertCompletionListHasItems("<Assembly: InternalsVisibleTo(""$$, AllInternalsVisible:=True)>", True)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Async Function AssertCompletionListHasNoItems_IfNumberIsEntered() As Task
Await AssertCompletionListHasItems("<Assembly: InternalsVisibleTo(1$$2)>", False)
End Function
<WpfFact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Async Function AssertCompletionListHasNoItems_IfNotInternalsVisibleToAttribute() As Task
Await AssertCompletionListHasItems("<Assembly: AssemblyVersion(""$$"")>", False)
......
......@@ -8,7 +8,6 @@ namespace Microsoft.CodeAnalysis.CSharp.Completion.Providers
{
internal sealed class InternalsVisibleToCompletionProvider : AbstractInternalsVisibleToCompletionProvider
{
protected override bool IsPositionEntirelyWithinStringLiteral(SyntaxTree syntaxTree, int position, CancellationToken cancellationToken)
=> syntaxTree.IsEntirelyWithinStringLiteral(position, cancellationToken);
}
}
......@@ -16,8 +16,6 @@ internal abstract class AbstractInternalsVisibleToCompletionProvider : CommonCom
{
private const string ProjectGuidKey = nameof(ProjectGuidKey);
protected abstract bool IsPositionEntirelyWithinStringLiteral(SyntaxTree syntaxTree, int position, CancellationToken cancellationToken);
internal override bool IsInsertionTrigger(SourceText text, int insertedCharacterPosition, OptionSet options)
{
var ch = text[insertedCharacterPosition];
......@@ -28,9 +26,9 @@ public override async Task ProvideCompletionsAsync(CompletionContext context)
{
var cancellationToken = context.CancellationToken;
var syntaxTree = await context.Document.GetSyntaxTreeAsync(cancellationToken).ConfigureAwait(false);
if (IsPositionEntirelyWithinStringLiteral(syntaxTree, context.Position, cancellationToken))
var syntaxFactsService = context.Document.GetLanguageService<ISyntaxFactsService>();
if (syntaxFactsService.IsEntirelyWithinStringOrCharOrNumericLiteral(syntaxTree, context.Position, cancellationToken))
{
var syntaxFactsService = context.Document.GetLanguageService<ISyntaxFactsService>();
var token = syntaxTree.FindTokenOnLeftOfPosition(context.Position, cancellationToken);
var attributeSyntaxNode = GetAttributeSyntaxNodeOfToken(syntaxFactsService, token);
if (attributeSyntaxNode == null)
......
......@@ -8,8 +8,5 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Friend NotInheritable Class InternalsVisibleToCompletionProvider
Inherits AbstractInternalsVisibleToCompletionProvider
Protected Overrides Function IsPositionEntirelyWithinStringLiteral(syntaxTree As SyntaxTree, position As Integer, cancellationToken As CancellationToken) As Boolean
Return syntaxTree.IsEntirelyWithinStringLiteral(position, cancellationToken)
End Function
End Class
End Namespace
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册