提交 7815502e 编写于 作者: R Ravi Chande

Merge pull request #2383 from rchande/CrefCompletion

Don't suggest type arguments in VB Crefs
...@@ -84,7 +84,7 @@ End Module]]></File>.Value ...@@ -84,7 +84,7 @@ End Module]]></File>.Value
End Sub End Sub
<Fact, Trait(Traits.Feature, Traits.Features.Completion)> <Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub InTypeParameterContext() Public Sub NotInTypeParameterContext()
Dim text = <File><![CDATA[ Dim text = <File><![CDATA[
Imports System Imports System
...@@ -96,7 +96,7 @@ Class Program(Of T) ...@@ -96,7 +96,7 @@ Class Program(Of T)
End Sub End Sub
End Class]]></File>.Value End Class]]></File>.Value
VerifyItemExists(text, "Integer") VerifyItemIsAbsent(text, "Integer")
End Sub End Sub
<Fact, Trait(Traits.Feature, Traits.Features.Completion)> <Fact, Trait(Traits.Feature, Traits.Features.Completion)>
...@@ -368,5 +368,37 @@ End Class ...@@ -368,5 +368,37 @@ End Class
VerifyProviderCommit(text, "List(Of T)", expected, " "c, "List(Of") VerifyProviderCommit(text, "List(Of T)", expected, " "c, "List(Of")
End Sub End Sub
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub OfAfterParen()
Dim text = <File><![CDATA[
Imports System
''' <summary>
''' <see cref="Foo($$
''' </summary>
Module Program
Sub Foo()
End Sub
End Module]]></File>.Value
VerifyItemExists(text, "Of")
End Sub
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub OfNotAfterComma()
Dim text = <File><![CDATA[
Imports System
''' <summary>
''' <see cref="Foo(a, $$
''' </summary>
Module Program
Sub Foo()
End Sub
End Module]]></File>.Value
VerifyItemIsAbsent(text, "Of")
End Sub
End Class End Class
End Namespace End Namespace
...@@ -70,10 +70,20 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers ...@@ -70,10 +70,20 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Return CreateCompletionItems(symbols, span, semanticModel, workspace, touchingToken.SpanStart) Return CreateCompletionItems(symbols, span, semanticModel, workspace, touchingToken.SpanStart)
End If End If
If IsParameterContext(touchingToken) OrElse If IsTypeParameterContext(touchingToken) Then
IsTypeParameterContext(touchingToken) Then Return Nothing
End If
If IsFirstParameterContext(touchingToken) OrElse IsOtherParameterContext(touchingToken) Then
Dim symbols = semanticModel.LookupNamespacesAndTypes(position) Dim symbols = semanticModel.LookupNamespacesAndTypes(position)
Return CreateCompletionItems(symbols, span, semanticModel, workspace, touchingToken.SpanStart) Dim items = CreateCompletionItems(symbols, span, semanticModel, workspace, touchingToken.SpanStart)
If (IsFirstParameterContext(touchingToken)) Then
' Include Of in case they're typing a type parameter
Return items.Concat(CreateOfCompletionItem(span))
End If
Return items
End If End If
If touchingToken.IsChildToken(Function(x As QualifiedNameSyntax) x.DotToken) Then If touchingToken.IsChildToken(Function(x As QualifiedNameSyntax) x.DotToken) Then
...@@ -129,9 +139,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers ...@@ -129,9 +139,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
Return False Return False
End Function End Function
Private Shared Function IsParameterContext(ByRef touchingToken As SyntaxToken) As Boolean Private Shared Function IsFirstParameterContext(ByRef touchingToken As SyntaxToken) As Boolean
Return touchingToken.IsChildToken(Function(x As CrefSignatureSyntax) x.OpenParenToken) OrElse Return touchingToken.IsChildToken(Function(x As CrefSignatureSyntax) x.OpenParenToken)
touchingToken.IsChildSeparatorToken(Function(p As CrefSignatureSyntax) p.ArgumentTypes) End Function
Private Shared Function IsOtherParameterContext(ByRef touchingToken As SyntaxToken) As Boolean
Return touchingToken.IsChildSeparatorToken(Function(p As CrefSignatureSyntax) p.ArgumentTypes)
End Function End Function
Private Shared Function IsCrefStartPosition(ByRef touchingToken As SyntaxToken) As Boolean Private Shared Function IsCrefStartPosition(ByRef touchingToken As SyntaxToken) As Boolean
...@@ -176,6 +189,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers ...@@ -176,6 +189,13 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Completion.Providers
End Function) End Function)
End Function End Function
Private Function CreateOfCompletionItem(span As TextSpan) As IEnumerable(Of CompletionItem)
Dim item = New CompletionItem(Me, "Of", span, glyph:=Glyph.Keyword,
descriptionFactory:=Function(c As CancellationToken) Task.FromResult(RecommendedKeyword.CreateDisplayParts("Of", VBFeaturesResources.OfKeywordToolTip)))
Return SpecializedCollections.SingletonEnumerable(item)
End Function
Protected Overrides Function IsExclusiveAsync(document As Document, position As Integer, triggerInfo As CompletionTriggerInfo, cancellationToken As CancellationToken) As Task(Of Boolean) Protected Overrides Function IsExclusiveAsync(document As Document, position As Integer, triggerInfo As CompletionTriggerInfo, cancellationToken As CancellationToken) As Task(Of Boolean)
Return SpecializedTasks.True Return SpecializedTasks.True
End Function End Function
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册