提交 3f5f0b48 编写于 作者: R Ravi Chande

Merge pull request #5554 from rchande/unlistdelegates

Unlist delegates from the VB completion list

Fixes https://github.com/dotnet/roslyn/issues/4208
......@@ -6688,6 +6688,24 @@ Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
Dim x = $$
End Sub
End Module
]]></code>.Value
VerifyItemIsAbsent(text, "Func(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemFuncExcludedInStatementContext()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
$$
......@@ -6784,6 +6802,129 @@ End Module
VerifyItemExists(text, "Delegate")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionExcludedInExpressionContext1()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
args.Select($$)
End Sub
End Module
]]></code>.Value
VerifyItemIsAbsent(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionExcludedInExpressionContext2()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
Dim x = $$
End Sub
End Module
]]></code>.Value
VerifyItemIsAbsent(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionExcludedInStatementContext()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
$$
End Sub
End Module
]]></code>.Value
VerifyItemIsAbsent(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionIncludedInGetType()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
GetType($$)
End Sub
End Module
]]></code>.Value
VerifyItemExists(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionIncludedInTypeOf()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Sub Main(args As String())
Dim s = TypeOf args Is $$
End Sub
End Module
]]></code>.Value
VerifyItemExists(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionIncludedInReturnTypeContext()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Function x() as $$
End Function
End Module
]]></code>.Value
VerifyItemExists(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemActionIncludedInFieldTypeContext()
Dim text =
<code><![CDATA[
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module Program
Dim x as $$
End Module
]]></code>.Value
VerifyItemExists(text, "Action(Of " & s_unicodeEllipsis & ")")
End Sub
<WorkItem(4428, "https://github.com/dotnet/roslyn/issues/4428")>
<Fact, Trait(Traits.Feature, Traits.Features.Completion)>
Public Sub SystemDelegateInExpressionContext()
......
......@@ -138,24 +138,23 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Recommendations
' "Func(Of" tends to get in the way of typing "Function". Exclude System.Func from expression
' contexts, except within GetType
If Not context.TargetToken.IsKind(SyntaxKind.OpenParenToken) OrElse
Not context.TargetToken.Parent.IsKind(SyntaxKind.GetTypeExpression) Then
Not context.TargetToken.Parent.IsKind(SyntaxKind.GetTypeExpression) Then
symbols = symbols.Where(Function(s) Not IsSystemFunc(s))
symbols = symbols.Where(Function(s) Not IsInEligibleDelegate(s))
End If
' Hide backing fields and events
Return symbols.Where(Function(s) FilterEventsAndGeneratedSymbols(Nothing, s))
End Function
Private Function IsSystemFunc(s As ISymbol) As Boolean
Dim namedTypeSymbol = TryCast(s, INamedTypeSymbol)
Return namedTypeSymbol IsNot Nothing AndAlso
namedTypeSymbol.Name = "Func" AndAlso
namedTypeSymbol.GetArity() > 0 AndAlso
namedTypeSymbol.ContainingNamespace IsNot Nothing AndAlso
namedTypeSymbol.ContainingNamespace.Name = "System" AndAlso
namedTypeSymbol.ContainingNamespace.ContainingNamespace.IsGlobalNamespace
Private Function IsInEligibleDelegate(s As ISymbol) As Boolean
If s.IsDelegateType() Then
Dim typeSymbol = DirectCast(s, ITypeSymbol)
Return typeSymbol.SpecialType <> SpecialType.System_Delegate
End If
Return False
End Function
Private Function GetSymbolsForQualifiedNameSyntax(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册