File: GoToDefinition\VisualBasicGoToDefinitionTests.vb
Web Access
Project: src\src\EditorFeatures\Test2\Microsoft.CodeAnalysis.EditorFeatures2.UnitTests.vbproj (Microsoft.CodeAnalysis.EditorFeatures2.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.
 
Namespace Microsoft.CodeAnalysis.Editor.UnitTests.GoToDefinition
    <[UseExportProvider]>
    <Trait(Traits.Feature, Traits.Features.GoToDefinition)>
    Public Class VisualBasicGoToDefinitionTests
        Inherits GoToDefinitionTestsBase
#Region "Normal Visual Basic Tests"
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/3589")>
        Public Async Function TestVisualBasicGoToDefinitionOnAnonymousMember() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
public class MyClass1
    public property [|Prop1|] as integer
end class
class Program
    sub Main()
        dim instance = new MyClass1()
 
        dim x as new With { instance.$$Prop1 }
    end sub
end class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|SomeClass|]
            End Class
            Class OtherClass
                Dim obj As Some$$Class
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/23030")>
        Public Async Function TestVisualBasicLiteralGoToDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Dim x as Integer = 12$$3
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/23030")>
        Public Async Function TestVisualBasicStringLiteralGoToDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Dim x as String = "wo$$ow"
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541105")>
        Public Async Function TestVisualBasicPropertyBackingField() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Property [|P|] As Integer
    Sub M()
          Me.$$_P = 10
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToDefinitionSameClass() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|SomeClass|]
                Dim obj As Some$$Class
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToDefinitionNestedClass() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class Outer
                Class [|Inner|]
                End Class
                Dim obj as In$$ner
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGotoDefinitionDifferentFiles() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class OtherClass
                Dim obj As SomeClass
            End Class
        </Document>
        <Document>
            Class OtherClass2
                Dim obj As Some$$Class
            End Class
        </Document>
        <Document>
            Class [|SomeClass|]
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGotoDefinitionPartialClasses() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            DummyClass
            End Class
        </Document>
        <Document>
            Partial Class [|OtherClass|]
                Dim a As Integer
            End Class
        </Document>
        <Document>
            Partial Class [|OtherClass|]
                Dim b As Integer
            End Class
        </Document>
        <Document>
            Class ConsumingClass
                Dim obj As Other$$Class
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGotoDefinitionMethod() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|SomeClass|]
                Dim x As Integer
            End Class
        </Document>
        <Document>
            Class ConsumingClass
                Sub goo()
                    Dim obj As Some$$Class
                End Sub
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/900438")>
        Public Async Function TestVisualBasicGotoDefinitionPartialMethod() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Partial Class Customer
                Private Sub [|OnNameChanged|]()
 
                End Sub
            End Class
        </Document>
        <Document>
            Partial Class Customer
                Sub New()
                    Dim x As New Customer()
                    x.OnNameChanged$$()
                End Sub
                Partial Private Sub OnNameChanged()
 
                End Sub
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicTouchLeft() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|SomeClass|]
                Dim x As Integer
            End Class
        </Document>
        <Document>
            Class ConsumingClass
                Sub goo()
                    Dim obj As $$SomeClass
                End Sub
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicTouchRight() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|SomeClass|]
                Dim x As Integer
            End Class
        </Document>
        <Document>
            Class ConsumingClass
                Sub goo()
                    Dim obj As SomeClass$$
                End Sub
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542872")>
        Public Async Function TestVisualBasicMe() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class B
    Sub New()
    End Sub
End Class
 
Class [|C|]
    Inherits B
 
    Sub New()
        MyBase.New()
        MyClass.Goo()
        $$Me.Bar()
    End Sub
 
    Private Sub Bar()
    End Sub
 
    Private Sub Goo()
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542872")>
        Public Async Function TestVisualBasicMyClass() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class B
    Sub New()
    End Sub
End Class
 
Class [|C|]
    Inherits B
 
    Sub New()
        MyBase.New()
        $$MyClass.Goo()
        Me.Bar()
    End Sub
 
    Private Sub Bar()
    End Sub
 
    Private Sub Goo()
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542872")>
        Public Async Function TestVisualBasicMyBase() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class [|B|]
    Sub New()
    End Sub
End Class
 
Class C
    Inherits B
 
    Sub New()
        $$MyBase.New()
        MyClass.Goo()
        Me.Bar()
    End Sub
 
    Private Sub Bar()
    End Sub
 
    Private Sub Goo()
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOverridenSubDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class Base
                Overridable Sub [|Method|]()
                End Sub
            End Class
            Class Derived
                Inherits Base
 
                Overr$$ides Sub Method()
                End Sub
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOverridenFunctionDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class Base
                Overridable Function [|Method|]() As Integer
                    Return 1
                End Function
            End Class
            Class Derived
                Inherits Base
 
                Overr$$ides Function Method() As Integer
                    Return 1
                End Function
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOverridenPropertyDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class Base
                Overridable Property [|Number|] As Integer
            End Class
            Class Derived
                Inherits Base
 
                Overr$$ides Property Number As Integer
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
#End Region
 
#Region "Venus Visual Basic Tests"
 
        <WpfFact>
        Public Async Function TestVisualBasicVenusGotoDefinition() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            #ExternalSource ("Default.aspx", 1)
            Class [|Program|]
                Sub Main(args As String())
                    Dim f As New Pro$$gram()
                End Sub
            End Class
            #End ExternalSource
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545324")>
        Public Async Function TestVisualBasicFilterGotoDefResultsFromHiddenCodeForUIPresenters() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|Program|]
                Sub Main(args As String())
            #ExternalSource ("Default.aspx", 1)
                    Dim f As New Pro$$gram()
                End Sub
            End Class
            #End ExternalSource
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545324")>
        Public Async Function TestVisualBasicDoNotFilterGotoDefResultsFromHiddenCodeForApis() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|Program|]
                Sub Main(args As String())
            #ExternalSource ("Default.aspx", 1)
                    Dim f As New Pro$$gram()
                End Sub
            End Class
            #End ExternalSource
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
#End Region
 
        <WpfFact>
        Public Async Function TestVisualBasicTestThroughExecuteCommand() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class [|SomeClass|]
                Dim x As Integer
            End Class
        </Document>
        <Document>
            Class ConsumingClass
                Sub goo()
                    Dim obj As SomeClass$$
                End Sub
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToDefinitionOnExtensionMethod() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            <![CDATA[
Class Program
    Private Shared Sub Main(args As String())
        Dim i As String = "1"
        i.Test$$Ext()
    End Sub
End Class

Module Ex
    <System.Runtime.CompilerServices.Extension()>
    Public Sub TestExt(Of T)(ex As T)
    End Sub
    <System.Runtime.CompilerServices.Extension()>
    Public Sub [|TestExt|](ex As string)
    End Sub
End Module]]>]
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543218")>
        Public Async Function TestVisualBasicQueryRangeVariable() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Imports System
Imports System.Collections.Generic
Imports System.Linq
 
Module Program
    Sub Main(args As String())
        Dim arr = New Integer() {4, 5}
        Dim q3 = From [|num|] In arr Select $$num
    End Sub
End Module
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529060")>
        Public Async Function TestVisualBasicGotoConstant() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Module M
    Sub Main()
label1: GoTo $$200
[|200|]:    GoTo label1
    End Sub
End Module
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WorkItem("https://github.com/dotnet/roslyn/issues/10132")>
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545661")>
        Public Async Function TestCrossLanguageParameterizedPropertyOverride() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true" AssemblyName="VBProj">
        <Document>
Public Class A
    Public Overridable ReadOnly Property X(y As Integer) As Integer
        [|Get|]
        End Get
    End Property
End Class
        </Document>
    </Project>
    <Project Language="C#" CommonReferences="true">
        <ProjectReference>VBProj</ProjectReference>
        <Document>
class B : A
{
    public override int get_X(int y)
    {
        return base.$$get_X(y);
    }
}
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/866094")>
        Public Async Function TestCrossLanguageNavigationToVBModuleMember() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true" AssemblyName="VBProj">
        <Document>
Public Module A
    Public Sub [|M|]()
    End Sub
End Module
        </Document>
    </Project>
    <Project Language="C#" CommonReferences="true">
        <ProjectReference>VBProj</ProjectReference>
        <Document>
class C
{
    static void N()
    {
        A.$$M();
    }
}
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
#Region "Show notification tests"
 
        <WpfFact>
        Public Async Function TestShowNotificationVB() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
            Class SomeClass
            End Class
            C$$lass OtherClass
                Dim obj As SomeClass
            End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace, expectedResult:=False)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/902119")>
        Public Async Function TestGoToDefinitionOnInferredFieldInitializer() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Public Class Class2
    Sub Test()
        Dim var1 = New With {Key .var2 = "Bob", Class2.va$$r3}
    End Sub
 
    Shared Property [|var3|]() As Integer
        Get
        End Get
        Set(ByVal value As Integer)
        End Set
    End Property
End Class
 
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/885151")>
        Public Async Function TestGoToDefinitionGlobalImportAlias() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <ProjectReference>VBAssembly</ProjectReference>
        <CompilationOptions>
            <GlobalImport>Goo = Importable.ImportMe</GlobalImport>
        </CompilationOptions>
        <Document>
Public Class Class2
    Sub Test()
        Dim x as Go$$o
    End Sub
End Class
 
        </Document>
    </Project>
    <Project Language="Visual Basic" CommonReferences="true" AssemblyName="VBAssembly">
        <Document>
Namespace Importable
    Public Class [|ImportMe|]
    End Class
End Namespace
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
#End Region
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitSelect_Exit() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M(parameter As String)
        Select Case parameter
            Case "a"
                Exit$$ Select
        End Select[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitSelect_Select() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M(parameter As String)
        Select Case parameter
            Case "a"
                Exit Select$$
        End Select[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitSub() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Exit Sub$$
    End Sub[||]
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitFunction() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Function M() As Integer
        Exit Sub$$
    End Function[||]
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueWhile_Continue() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]While True
             Continue$$ While
        End While
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueWhile_While() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]While True
             Continue While$$
        End While
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitWhile_While() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        While True
             Exit While$$
        End While[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueFor_Continue() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]For index As Integer = 1 To 5
             Continue$$ For
        Next
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueFor_For() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]For index As Integer = 1 To 5
             Continue For$$
        Next
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitFor_For() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        For index As Integer = 1 To 5
             Exit For$$
        Next[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueForEach_For() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]For Each element In Nothing
             Continue For$$
        Next
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitForEach_For() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        For Each element In Nothing
             Exit For$$
        Next[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueDoWhileLoop_Do() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]Do While True
             Continue Do$$
        Loop
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitDoWhileLoop_Do() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Do While True
             Exit Do$$
        Loop[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueDoUntilLoop_Do() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]Do Until True
             Continue Do$$
        Loop
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitDoUntilLoop_Do() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Do Until True
             Exit Do$$
        Loop[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueDoLoopWhile_Do() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]Do
             Continue Do$$
        Loop While True
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnContinueDoLoopUntil_Do() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        [||]Do
             Continue Do$$
        Loop Until True
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitTry() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Try
             Exit Try$$
        End Try[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitTryInCatch() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Try
        Catch Exception
             Exit Try$$
        End Try[||]
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInSub() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    [||]Sub M()
        Return$$
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInSub_Partial() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Partial Sub M()
    End Sub
 
    [||]Partial Private Sub M()
        Return$$
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInSub_Partial_ReverseOrder() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    [||]Partial Private Sub M()
        Return$$
    End Sub
 
    Partial Sub M()
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInSubLambda() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Dim lambda = [||]Sub()
            Return$$
        End Sub
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInFunction() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    [||]Function M() As Int
        Return$$ 1
    End Function
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInFunction_OnValue() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Function M([|x|] As Integer) As Integer
        Return x$$
    End Function
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInIterator() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    [||]Public Iterator Function M() As IEnumerable(Of Integer)
        Yield$$ 1
    End Function
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInIterator_OnValue() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Public Iterator Function M([|x|] As Integer) As IEnumerable(Of Integer)
        Yield x$$
    End Function
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInFunctionLambda() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Sub M()
        Dim lambda = [||]Function() As Int
            Return$$ 1
        End Function
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInConstructor() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    [||]Sub New()
        Return$$
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInOperator() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    [||]Public Shared Operator +(ByVal i As Integer) As Integer
        Return$$ 1
    End Operator
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInGetAccessor() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    ReadOnly Property P() As Integer
        [||]Get
            Return$$ 1
        End Get
    End Property
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInSetAccessor() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    ReadOnly Property P() As Integer
        [||]Set
            Return$$
        End Set
    End Property
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitPropertyInGetAccessor() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    ReadOnly Property P() As Integer
        [||]Get
            Exit Property$$
        End Get
    End Property
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnExitPropertyInSetAccessor() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Property P() As Integer
        [||]Set
            Exit Property$$
        End Set
    End Property
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInAddHandler() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Public Custom Event Click As EventHandler
        [||]AddHandler(ByVal value As EventHandler)
            Return$$
        End AddHandler
    End Event
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInRemoveHandler() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Public Custom Event Click As EventHandler
        [||]RemoveHandler(ByVal value As EventHandler)
            Return$$
        End RemoveHandler
    End Event
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact>
        Public Async Function TestVisualBasicGoToOnReturnInRaiseEvent() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Class C
    Public Custom Event Click As EventHandler
        [||]RaiseEvent(ByVal sender As Object, ByVal e As EventArgs)
            Return$$
        End RaiseEvent
    End Event
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/37842")>
        Public Async Function TestVisualBasicGoToDefOnUsing1() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
using System
 
class Program
    sub Goo()
        $$using disposableObject = new DisposableObject()
        end using
    end sub
end class
 
class DisposableObject
    implements IDisposable
 
    public sub [|Dispose|]() implements IDisposable.Dispose
    end sub
end class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/37842")>
        Public Async Function TestVisualBasicGoToDefOnUsing2() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
using System
 
class Program
    sub Goo()
        $$using new DisposableObject()
        end using
    end sub
end class
 
class DisposableObject
    implements IDisposable
 
    public sub [|Dispose|]() implements IDisposable.Dispose
    end sub
end class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/69916")>
        Public Async Function TestVisualBasicGoToDefinition_GoToLabel01() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Using System
 
Public Class C
    Public Sub Method(parameter As Integer)
 
        If parameter = 1 Then
            $$GoTo label
        End If
 
        Console.WriteLine(parameter)
 
[||]label:
        Return
 
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/69916")>
        Public Async Function TestVisualBasicGoToDefinition_GoToLabel02() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Using System
 
Public Class C
    Public Sub Method(parameter As Integer)
 
        If parameter = 1 Then
            $$GoTo 150
        End If
 
        Console.WriteLine(parameter)
 
[||]150:
        Return
 
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
 
        <WpfFact, WorkItem("https://github.com/dotnet/roslyn/issues/69916")>
        Public Async Function TestVisualBasicGoToDefinition_GoToLabel03() As Task
            Dim workspace =
<Workspace>
    <Project Language="Visual Basic" CommonReferences="true">
        <Document>
Using System
 
Public Class C
    Public Sub Method(parameter As Integer)
 
        If parameter = 1 Then
            $$GoTo 150
        End If
 
        Console.WriteLine(parameter)
 
label:
[||]150:
        Return
 
    End Sub
End Class
        </Document>
    </Project>
</Workspace>
 
            Await TestAsync(workspace)
        End Function
    End Class
End Namespace