File: SignatureHelp\GenericNameSignatureHelpProviderTests.vb
Web Access
Project: ..\..\..\src\EditorFeatures\VisualBasicTest\Microsoft.CodeAnalysis.VisualBasic.EditorFeatures.UnitTests.vbproj (Microsoft.CodeAnalysis.VisualBasic.EditorFeatures.UnitTests)
' Licensed to the .NET Foundation under one or more agreements.
' The .NET Foundation licenses this file to you under the MIT license.
' See the LICENSE file in the project root for more information.
 
Imports Microsoft.CodeAnalysis.Editor.UnitTests.SignatureHelp
Imports Microsoft.CodeAnalysis.VisualBasic.SignatureHelp
 
Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.SignatureHelp
    <Trait(Traits.Feature, Traits.Features.SignatureHelp)>
    Public Class GenericNameSignatureHelpProviderTests
        Inherits AbstractVisualBasicSignatureHelpProviderTests
 
        Friend Overrides Function GetSignatureHelpProviderType() As Type
            Return GetType(GenericNameSignatureHelpProvider)
        End Function
 
#Region "Declaring generic type objects"
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWith1ParameterUnterminated() As Task
            Dim markup = <a><![CDATA[
Class G(Of T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWith1ParameterTerminated() As Task
            Dim markup = <a><![CDATA[
Class G(Of T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWith2ParametersOn1() As Task
            Dim markup = <a><![CDATA[
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWith2ParametersOn2() As Task
            Dim markup = <a><![CDATA[
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of Integer, $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", String.Empty, String.Empty, currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWith2ParametersOn1XmlDoc() As Task
            Dim markup = <a><![CDATA[
''' <summary>
''' SummaryG
''' </summary>
''' <typeparam name="S">ParamS. Also see <see cref="C"/></typeparam>
''' <typeparam name="T">ParamT</typeparam>
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", "SummaryG", "ParamS. Also see C", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWith2ParametersOn2XmlDoc() As Task
            Dim markup = <a><![CDATA[
''' <summary>
''' SummaryG
''' </summary>
''' <typeparam name="S">ParamS</typeparam>
''' <typeparam name="T">ParamT. Also see <see cref="C"/></typeparam>
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of Integer, $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", "SummaryG", "ParamT. Also see C", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/827031")>
        Public Async Function TestDeclaringGenericTypeWith2ParametersOn1XmlDocReferencingTypeParams() As Task
            Dim markup = <a><![CDATA[
''' <summary>
''' SummaryG
''' </summary>
''' <typeparam name="S">ParamS. Also see <see cref="T"/></typeparam>
''' <typeparam name="T">ParamT. Also see <see cref="S"/></typeparam>
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", "SummaryG", "ParamS. Also see T", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/827031")>
        Public Async Function TestDeclaringGenericTypeWith2ParametersOn2XmlDocReferencingTypeParams() As Task
            Dim markup = <a><![CDATA[
''' <summary>
''' SummaryG
''' </summary>
''' <typeparam name="S">ParamS. Also see <see cref="T"/></typeparam>
''' <typeparam name="T">ParamT. Also see <see cref="S"/></typeparam>
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of Integer, $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", "SummaryG", "ParamT. Also see S", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
#End Region
 
#Region "Constraints on generic types"
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsStructure() As Task
            Dim markup = <a><![CDATA[
Class G(Of S As Structure, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As Structure, T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsClass() As Task
            Dim markup = <a><![CDATA[
Class G(Of S As Class, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As Class, T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsNew() As Task
            Dim markup = <a><![CDATA[
Class G(Of S As New, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As New, T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsBase() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass
End Class

Class G(Of S As SomeBaseClass, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As SomeBaseClass, T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsBaseGenericWithGeneric() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass(Of X)
End Class

Class G(Of S As SomeBaseClass(Of S), T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As SomeBaseClass(Of S), T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsBaseGenericWithNonGeneric() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass(Of X)
End Class

Class G(Of S As SomeBaseClass(Of Integer), T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As SomeBaseClass(Of Integer), T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsBaseGenericWithGenericNested() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass(Of X)
End Class

Class G(Of S As SomeBaseClass(Of SomeBaseClass(Of S)), T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As SomeBaseClass(Of SomeBaseClass(Of S)), T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsDeriveFromAnotherGenericParameter() As Task
            Dim markup = <a><![CDATA[
Class G(Of S As T, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As T, T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsMixed1() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass
End Class

Interface IGoo
End Interface

''' <summary>
''' SummaryG
''' </summary>
''' <typeparam name="S">ParamS</typeparam>
''' <typeparam name="T">ParamT</typeparam>
Class G(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})", "SummaryG", "ParamS", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestDeclaringGenericTypeWithConstraintsMixed2() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass
End Class

Interface IGoo
End Interface

''' <summary>
''' SummaryG
''' </summary>
''' <typeparam name="S">ParamS</typeparam>
''' <typeparam name="T">ParamT</typeparam>
Class G(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of Bar, $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})", "SummaryG", "ParamT", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
#End Region
 
#Region "Generic member invocation"
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWith1ParameterUnterminated() As Task
            Dim markup = <a><![CDATA[
Class C
    Function Goo(Of T)(arg As T) As T
    End Function
   
    Sub Bar()
        [|Goo(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of T)(arg As T) As T", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWith1ParameterTerminated() As Task
            Dim markup = <a><![CDATA[
Class C
    Function Goo(Of T)(arg As T) As T
    End Function
   
    Sub Bar()
        [|Goo(Of $$|])
    End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of T)(arg As T) As T", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWith2ParametersOn1() As Task
            Dim markup = <a><![CDATA[
Class C
    Function Goo(Of S, T)(arg As T) As S
    End Function
   
    Sub Bar()
        [|Goo(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of S, T)(arg As T) As S", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWith2ParametersOn2() As Task
            Dim markup = <a><![CDATA[
Class C
    Function Goo(Of S, T)(arg As T) As T
    End Function
   
    Sub Bar()
        [|Goo(Of Integer, $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of S, T)(arg As T) As T", String.Empty, String.Empty, currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWith2ParametersOn1XmlDoc() As Task
            Dim markup = <a><![CDATA[
Class C
    ''' <summary>
    ''' GooSummary
    ''' </summary>
    ''' <typeparam name="S">ParamS</typeparam>
    ''' <typeparam name="T">ParamT</typeparam>
    Function Goo(Of S, T)(arg As T) As S
    End Function
   
    Sub Bar()
        [|Goo(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of S, T)(arg As T) As S", "GooSummary", "ParamS", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWith2ParametersOn2XmlDoc() As Task
            Dim markup = <a><![CDATA[
Class C
    ''' <summary>
    ''' GooSummary
    ''' </summary>
    ''' <typeparam name="S">ParamS</typeparam>
    ''' <typeparam name="T">ParamT</typeparam>
    Function Goo(Of S, T)(arg As T) As S
    End Function
   
    Sub Bar()
        [|Goo(Of Integer, $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of S, T)(arg As T) As S", "GooSummary", "ParamT", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544124")>
        <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544123")>
        <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/684631")>
        Public Async Function TestCallingGenericExtensionMethod() As Task
            Dim markup = <a><![CDATA[
Imports System

Class D
End Class

Module ExtnMethods
    <Runtime.CompilerServices.Extension()>
    Function Goo(Of S, T)(ByRef dClass As D, objS as S, objT As T) As S
    End Function
End Module

Class C
    Sub Bar()
        Dim obj As D = Nothing
        obj.[|Goo(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem($"<{VBFeaturesResources.Extension}> D.Goo(Of S, T)(objS As S, objT As T) As S", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
#End Region
 
#Region "Constraints on generic methods"
        <Fact>
        Public Async Function TestInvokingGenericMethodTypeWithConstraintsMixed1() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass
End Class

Interface IGoo
End Interface

Class C
    ''' <summary>
    ''' GooSummary
    ''' </summary>
    ''' <typeparam name="S">ParamS</typeparam>
    ''' <typeparam name="T">ParamT</typeparam>
    Function Goo(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})(objS As S, objT As T) As T
    End Function

    Sub Bar()
        [|Goo(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})(objS As S, objT As T) As T", "GooSummary", "ParamS", currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
 
        <Fact>
        Public Async Function TestInvokingGenericMethodWithConstraintsMixed2() As Task
            Dim markup = <a><![CDATA[
Class SomeBaseClass
End Class

Interface IGoo
End Interface

Class C
    ''' <summary>
    ''' GooSummary
    ''' </summary>
    ''' <typeparam name="S">ParamS</typeparam>
    ''' <typeparam name="T">ParamT</typeparam>
    Function Goo(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})(objS As S, objT As T) As T
    End Function

    Sub Bar()
        [|Goo(Of Bas, $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of S As {SomeBaseClass, New}, T As {Class, S, IGoo, New})(objS As S, objT As T) As T", "GooSummary", "ParamT", currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems)
        End Function
#End Region
 
#Region "Trigger tests"
 
        <Fact>
        Public Async Function TestInvocationOnTriggerSpace() As Task
 
            Dim markup = <a><![CDATA[
Class G(Of T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of $$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestAsync(markup, expectedOrderedItems, usePreviousCharAsTrigger:=True)
        End Function
 
        <Fact>
        Public Async Function TestInvocationOnTriggerComma() As Task
 
            Dim markup = <a><![CDATA[
Class G(Of S, T)
End Class

Class C
    Sub Goo()
        Dim q As [|G(Of Integer,$$
    |]End Sub
End Class
]]></a>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("G(Of S, T)", String.Empty, String.Empty, currentParameterIndex:=1))
 
            Await TestAsync(markup, expectedOrderedItems, usePreviousCharAsTrigger:=True)
        End Function
 
        <Fact>
        Public Sub TestTriggerCharacters()
            Dim expectedTriggerCharacters() As Char = {","c, " "c}
            Dim unexpectedTriggerCharacters() As Char = {"["c, "<"c, "("c}
 
            VerifyTriggerCharacters(expectedTriggerCharacters, unexpectedTriggerCharacters)
        End Sub
 
#End Region
 
#Region "EditorBrowsable tests"
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericMethod_BrowsableAlways() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim cc As C
        cc.Goo(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
Public Class C
    <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)>
    Public Sub Goo(Of T)(x As T)
    End Sub
End Class
]]></Text>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of T)(x As T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=expectedOrderedItems,
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic)
 
        End Function
 
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericMethod_BrowsableNever() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim cc As C
        cc.Goo(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
Public Class C
    <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
    Public Sub Goo(Of T)(x As T)
    End Sub
End Class
]]></Text>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of T)(x As T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=New List(Of SignatureHelpTestItem),
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic)
 
        End Function
 
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericMethod_BrowsableAdvanced() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim cc As C
        cc.Goo(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
Public Class C
    <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)>
    Public Sub Goo(Of T)(x As T)
    End Sub
End Class
]]></Text>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C.Goo(Of T)(x As T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=expectedOrderedItems,
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic,
                                                       hideAdvancedMembers:=False)
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=New List(Of SignatureHelpTestItem),
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic,
                                                       hideAdvancedMembers:=True)
        End Function
 
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericMethod_BrowsableMixed() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim cc As C
        cc.Goo(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
Public Class C
    <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)>
    Public Sub Goo(Of T)(x As T)
    End Sub

    <System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
    Public Sub Goo(Of T, U)(x As T, y As U)
    End Sub
End Class
]]></Text>.Value
 
            Dim expectedOrderedItemsMetadataReference = New List(Of SignatureHelpTestItem)()
            expectedOrderedItemsMetadataReference.Add(New SignatureHelpTestItem("C.Goo(Of T)(x As T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Dim expectedOrderedItemsSameSolution = New List(Of SignatureHelpTestItem)()
            expectedOrderedItemsSameSolution.Add(New SignatureHelpTestItem("C.Goo(Of T)(x As T)", String.Empty, String.Empty, currentParameterIndex:=0))
            expectedOrderedItemsSameSolution.Add(New SignatureHelpTestItem("C.Goo(Of T, U)(x As T, y As U)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=expectedOrderedItemsMetadataReference,
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItemsSameSolution,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic)
        End Function
 
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericType_BrowsableAlways() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim c As C(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Always)>
Public Class C(Of T)
End Class
]]></Text>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C(Of T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=expectedOrderedItems,
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic)
        End Function
 
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericType_BrowsableNever() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim c As C(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)>
Public Class C(Of T)
End Class
]]></Text>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C(Of T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=New List(Of SignatureHelpTestItem)(),
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic)
        End Function
 
        <Fact, WorkItem(7336, "DevDiv_Projects/Roslyn")>
        Public Async Function TestEditorBrowsable_GenericType_BrowsableAdvanced() As Task
            Dim markup = <Text><![CDATA[
Class Program
    Sub M()
        Dim c As C(Of $$
    End Sub
End Class
]]></Text>.Value
 
            Dim referencedCode = <Text><![CDATA[
<System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Advanced)>
Public Class C(Of T)
End Class
]]></Text>.Value
 
            Dim expectedOrderedItems = New List(Of SignatureHelpTestItem)()
            expectedOrderedItems.Add(New SignatureHelpTestItem("C(Of T)", String.Empty, String.Empty, currentParameterIndex:=0))
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=New List(Of SignatureHelpTestItem)(),
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic,
                                                       hideAdvancedMembers:=True)
 
            Await TestSignatureHelpInEditorBrowsableContextsAsync(markup:=markup,
                                                       referencedCode:=referencedCode,
                                                       expectedOrderedItemsMetadataReference:=expectedOrderedItems,
                                                       expectedOrderedItemsSameSolution:=expectedOrderedItems,
                                                       sourceLanguage:=LanguageNames.VisualBasic,
                                                       referencedLanguage:=LanguageNames.VisualBasic,
                                                       hideAdvancedMembers:=False)
        End Function
#End Region
 
    End Class
End Namespace