/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/VisualBasicTest/ExtractMethod/ExtractMethodTests.vb
1 259 строк
36 KB
Cyrus Najmabadi
Update tests
23 июл 2025, 12:30
23 июл 2025, 12:30
afb1347
Код
Авторство
О чём код?
' 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.CodeRefactorings Imports Microsoft.CodeAnalysis.CodeRefactorings.ExtractMethod Imports Microsoft.CodeAnalysis.CodeStyle Imports Microsoft.CodeAnalysis.Editor.UnitTests.CodeActions Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.CodeRefactorings.ExtractMethod <Trait(Traits.Feature, Traits.Features.CodeActionsExtractMethod)> Public NotInheritable Class ExtractMethodTests Inherits AbstractVisualBasicCodeActionTest_NoEditor Protected Overrides Function CreateCodeRefactoringProvider(workspace As TestWorkspace, parameters As TestParameters) As CodeRefactoringProvider Return New ExtractMethodCodeRefactoringProvider() End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540686")> Public Async Function TestExtractReturnExpression() As Task Await TestInRegularAndScriptAsync( "Class Module1 Private Delegate Function Func(i As Integer) Shared Sub Main(args As String()) Dim temp As Integer = 2 Dim fnc As Func = Function(arg As Integer) temp = arg Return [|arg|] End Function End Sub End Class", "Class Module1 Private Delegate Function Func(i As Integer) Shared Sub Main(args As String()) Dim temp As Integer = 2 Dim fnc As Func = Function(arg As Integer) temp = arg Return {|Rename:GetArg|}(arg) End Function End Sub Private Shared Function GetArg(arg As Integer) As Integer Return arg End Function End Class") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540755")> Public Async Function TestExtractMultilineLambda() As Task Await TestInRegularAndScriptAsync( "Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) If True Then Dim q As Action = [|Sub() End Sub|] End Sub End Module", "Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) If True Then Dim q As Action = {|Rename:GetQ|}() End Sub Private Function GetQ() As Action Return Sub() End Sub End Function End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541515")> Public Async Function TestCollectionInitializerInObjectCollectionInitializer() As Task Await TestInRegularAndScriptAsync( "Class Program Sub Main() [|Dim x As New List(Of Program) From {New Program}|] End Sub Public Property Name As String End Class", "Class Program Sub Main() {|Rename:NewMethod|}() End Sub Private Shared Sub NewMethod() Dim x As New List(Of Program) From {New Program} End Sub Public Property Name As String End Class") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542251")> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543030")> Public Async Function TestLambdaSelection() As Task Await TestInRegularAndScriptAsync( "Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim q As Object If True Then q = [|Sub() End Sub|] End Sub End Module", "Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim q As Object If True Then q = {|Rename:NewMethod|}() End Sub Private Function NewMethod() As Object Return Sub() End Sub End Function End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542904")> Public Async Function TestFormatBeforeAttribute() As Task Await TestInRegularAndScriptAsync( <Text>Module Program Sub Main(args As String()) Dim x = [|1 + 1|] End Sub <Obsolete> Sub Goo End Sub End Module </Text>.Value.Replace(vbLf, vbCrLf), <Text>Module Program Sub Main(args As String()) Dim x = {|Rename:GetX|}() End Sub Private Function GetX() As Integer Return 1 + 1 End Function <Obsolete> Sub Goo End Sub End Module </Text>.Value.Replace(vbLf, vbCrLf)) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545262")> Public Async Function TestInTernaryConditional() As Task Await TestInRegularAndScriptAsync( "Module Program Sub Main(args As String()) Dim p As Object = Nothing Dim Obj1 = If(New With {.a = True}.a, p, [|Nothing|]) End Sub End Module", "Module Program Sub Main(args As String()) Dim p As Object = Nothing Dim Obj1 = If(New With {.a = True}.a, p, {|Rename:NewMethod|}()) End Sub Private Function NewMethod() As Object Return Nothing End Function End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545547")> Public Async Function TestInRangeArgumentUpperBound() As Task Await TestInRegularAndScriptAsync( "Module Program Sub Main() Dim x(0 To [|1 + 2|]) ' Extract method End Sub End Module", "Module Program Sub Main() Dim x(0 To {|Rename:NewMethod|}()) ' Extract method End Sub Private Function NewMethod() As Integer Return 1 + 2 End Function End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545655")> Public Async Function TestInWhileUntilCondition() As Task Await TestInRegularAndScriptAsync( "Module M Sub Main() Dim x = 0 Do While [|x * x < 100|] x += 1 Loop End Sub End Module", "Module M Sub Main() Dim x = 0 Do While {|Rename:NewMethod|}(x) x += 1 Loop End Sub Private Function NewMethod(x As Integer) As Boolean Return x * x < 100 End Function End Module") End Function <Fact> Public Async Function TestInInterpolation1() As Task Await TestInRegularAndScriptAsync( "Module M Sub Main() Dim v As New Object [|System.Console.WriteLine($""{v}"")|] System.Console.WriteLine(v) End Sub End Module", "Module M Sub Main() Dim v As New Object {|Rename:NewMethod|}(v) System.Console.WriteLine(v) End Sub Private Sub NewMethod(v As Object) System.Console.WriteLine($""{v}"") End Sub End Module") End Function <Fact> Public Async Function TestInInterpolation2() As Task Await TestInRegularAndScriptAsync( "Module M Sub Main() Dim v As New Object System.Console.WriteLine([|$""{v}""|]) System.Console.WriteLine(v) End Sub End Module", "Module M Sub Main() Dim v As New Object System.Console.WriteLine({|Rename:NewMethod|}(v)) System.Console.WriteLine(v) End Sub Private Function NewMethod(v As Object) As String Return $""{v}"" End Function End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/545829")> Public Async Function TestMissingOnImplicitMemberAccess() As Task Await TestInRegularAndScriptAsync( "Module Program Sub Main() With """""""" Dim x = [|.GetHashCode|] Xor &H7F3E ' Introduce Local End With End Sub End Module", "Module Program Sub Main() {|Rename:NewMethod|}() End Sub Private Sub NewMethod() With """""""" Dim x = .GetHashCode Xor &H7F3E ' Introduce Local End With End Sub End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/984831")> Public Async Function TestPreserveCommentsBeforeDeclaration_1() As Task Await TestInRegularAndScriptAsync( <Text>Class Program Sub Main(args As String()) [|Dim one As Program = New Program() one.M() ' This is the comment Dim two As Program = New Program() two.M()|] one.M() two.M() End Sub Private Sub M() Throw New NotImplementedException() End Sub End Class </Text>.Value.Replace(vbLf, vbCrLf), <Text>Class Program Sub Main(args As String()) Dim one As Program = Nothing Dim two As Program = Nothing {|Rename:NewMethod|}(one, two) one.M() two.M() End Sub Private Shared Sub NewMethod(ByRef one As Program, ByRef two As Program) one = New Program() one.M() ' This is the comment two = New Program() two.M() End Sub Private Sub M() Throw New NotImplementedException() End Sub End Class </Text>.Value.Replace(vbLf, vbCrLf)) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/984831")> Public Async Function TestPreserveCommentsBeforeDeclaration_2() As Task Await TestInRegularAndScriptAsync( <Text>Class Program Sub Main(args As String()) [|Dim one As Program = New Program() one.M() ' This is the comment Dim two As Program = New Program(), three As Program = New Program() two.M()|] one.M() two.M() three.M() End Sub Private Sub M() Throw New NotImplementedException() End Sub End Class </Text>.Value.Replace(vbLf, vbCrLf), <Text>Class Program Sub Main(args As String()) Dim one As Program = Nothing Dim two As Program = Nothing Dim three As Program = Nothing {|Rename:NewMethod|}(one, two, three) one.M() two.M() three.M() End Sub Private Shared Sub NewMethod(ByRef one As Program, ByRef two As Program, ByRef three As Program) one = New Program() one.M() ' This is the comment two = New Program() three = New Program() two.M() End Sub Private Sub M() Throw New NotImplementedException() End Sub End Class </Text>.Value.Replace(vbLf, vbCrLf)) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/984831")> Public Async Function TestPreserveCommentsBeforeDeclaration_3() As Task Await TestInRegularAndScriptAsync( <Text>Class Program Sub Main(args As String()) [|Dim one As Program = New Program() one.M() ' This is the comment Dim two As Program = New Program() two.M() ' Second Comment Dim three As Program = New Program() three.M()|] one.M() two.M() three.M() End Sub Private Sub M() Throw New NotImplementedException() End Sub End Class </Text>.Value.Replace(vbLf, vbCrLf), <Text>Class Program Sub Main(args As String()) Dim one As Program = Nothing Dim two As Program = Nothing Dim three As Program = Nothing {|Rename:NewMethod|}(one, two, three) one.M() two.M() three.M() End Sub Private Shared Sub NewMethod(ByRef one As Program, ByRef two As Program, ByRef three As Program) one = New Program() one.M() ' This is the comment two = New Program() two.M() ' Second Comment three = New Program() three.M() End Sub Private Sub M() Throw New NotImplementedException() End Sub End Class </Text>.Value.Replace(vbLf, vbCrLf)) End Function <Fact, CompilerTrait(CompilerFeature.Tuples)> <WorkItem("https://github.com/dotnet/roslyn/issues/13042")> Public Async Function TestTuples() As Task Await TestInRegularAndScriptAsync( "Class Program Sub Main(args As String()) [|Dim x = (1, 2)|] M(x) End Sub Private Sub M(x As (Integer, Integer)) End Sub End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", "Class Program Sub Main(args As String()) Dim x As (Integer, Integer) = {|Rename:NewMethod|}() M(x) End Sub Private Shared Function NewMethod() As (Integer, Integer) Return (1, 2) End Function Private Sub M(x As (Integer, Integer)) End Sub End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace") End Function <Fact, CompilerTrait(CompilerFeature.Tuples)> <WorkItem("https://github.com/dotnet/roslyn/issues/11196")> Public Async Function TestTupleDeclarationWithNames() As Task Await TestInRegularAndScriptAsync( "Class Program Sub Main(args As String()) [|Dim x As (a As Integer, b As Integer) = (1, 2)|] System.Console.WriteLine(x.a) End Sub End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", "Class Program Sub Main(args As String()) Dim x As (a As Integer, b As Integer) = {|Rename:NewMethod|}() System.Console.WriteLine(x.a) End Sub Private Shared Function NewMethod() As (a As Integer, b As Integer) Return (1, 2) End Function End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace") End Function <Fact, CompilerTrait(CompilerFeature.Tuples)> <WorkItem("https://github.com/dotnet/roslyn/issues/11196")> Public Async Function TestTupleDeclarationWithSomeNames() As Task Await TestInRegularAndScriptAsync( "Class Program Sub Main(args As String()) [|Dim x As (a As Integer, Integer) = (1, 2)|] System.Console.WriteLine(x.a) End Sub End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", "Class Program Sub Main(args As String()) Dim x As (a As Integer, Integer) = {|Rename:NewMethod|}() System.Console.WriteLine(x.a) End Sub Private Shared Function NewMethod() As (a As Integer, Integer) Return (1, 2) End Function End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace") End Function <Fact, CompilerTrait(CompilerFeature.Tuples)> <WorkItem("https://github.com/dotnet/roslyn/issues/18311")> Public Async Function TestTupleWith1Arity() As Task Await TestInRegularAndScriptAsync( "Class Program Sub Main(args As String()) Dim y = New ValueTuple(Of Integer)(1) [|y.Item1.ToString()|] End Sub End Class Structure ValueTuple(Of T1) Public Property Item1 As T1 Public Sub New(item1 As T1) End Sub End Structure", "Class Program Sub Main(args As String()) Dim y = New ValueTuple(Of Integer)(1) {|Rename:NewMethod|}(y) End Sub Private Shared Sub NewMethod(y As ValueTuple(Of Integer)) y.Item1.ToString() End Sub End Class Structure ValueTuple(Of T1) Public Property Item1 As T1 Public Sub New(item1 As T1) End Sub End Structure") End Function <Fact, CompilerTrait(CompilerFeature.Tuples)> Public Async Function TestTupleWithInferredNames() As Task Await TestAsync( "Class Program Sub Main() Dim a = 1 Dim t = [|(a, b:=2)|] System.Console.Write(t.a) End Sub End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", "Class Program Sub Main() Dim a = 1 Dim t = {|Rename:GetT|}(a) System.Console.Write(t.a) End Sub Private Shared Function GetT(a As Integer) As (a As Integer, b As Integer) Return (a, b:=2) End Function End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", New TestParameters(TestOptions.Regular.WithLanguageVersion(LanguageVersion.VisualBasic15_3))) End Function <Fact, CompilerTrait(CompilerFeature.Tuples)> Public Async Function TestTupleWithInferredNames_WithVB15() As Task Await TestAsync( "Class Program Sub Main() Dim a = 1 Dim t = [|(a, b:=2)|] System.Console.Write(t.a) End Sub End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", "Class Program Sub Main() Dim a = 1 Dim t = {|Rename:GetT|}(a) System.Console.Write(t.a) End Sub Private Shared Function GetT(a As Integer) As (a As Integer, b As Integer) Return (a, b:=2) End Function End Class Namespace System Structure ValueTuple(Of T1, T2) End Structure End Namespace", New TestParameters(TestOptions.Regular.WithLanguageVersion(LanguageVersion.VisualBasic15))) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitFalse() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).ConfigureAwait(False)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration).ConfigureAwait(False) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(False) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitTrue() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).ConfigureAwait(True)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(True) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitNonLiteral() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).ConfigureAwait(M())|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(M()) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithNoConfigureAwait() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitFalseInLambda() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Run(Async Function () Await Task.Delay(duration).ConfigureAwait(False))|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Run(Async Function() Await Task.Delay(duration).ConfigureAwait(False)) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitFalseDifferentCase() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).configureawait(False)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration).ConfigureAwait(False) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).configureawait(False) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitMixture1() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).ConfigureAwait(False) Await Task.Delay(duration).ConfigureAwait(True)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration).ConfigureAwait(False) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(False) Await Task.Delay(duration).ConfigureAwait(True) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitMixture2() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).ConfigureAwait(True) Await Task.Delay(duration).ConfigureAwait(False)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration).ConfigureAwait(False) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(True) Await Task.Delay(duration).ConfigureAwait(False) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitMixture3() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task [|Await Task.Delay(duration).ConfigureAwait(M()) Await Task.Delay(duration).ConfigureAwait(False)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await {|Rename:NewMethod|}(duration).ConfigureAwait(False) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(M()) Await Task.Delay(duration).ConfigureAwait(False) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/38529")> Public Async Function TestExtractAsyncMethodWithConfigureAwaitFalseOutsideSelection() As Task Await TestInRegularAndScriptAsync( "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await Task.Delay(duration).ConfigureAwait(False) [|Await Task.Delay(duration).ConfigureAwait(True)|] End Function End Class", "Class C Private Async Function MyDelay(duration As TimeSpan) As Task Await Task.Delay(duration).ConfigureAwait(False) Await {|Rename:NewMethod|}(duration) End Function Private Shared Async Function NewMethod(duration As TimeSpan) As System.Threading.Tasks.Task Await Task.Delay(duration).ConfigureAwait(True) End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess1() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?.[|ToString|]() end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As String Return b?.ToString() End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess2() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?.[|ToString|]().Length end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As Integer? Return b?.ToString().Length End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess3() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?.Count.[|ToString|]() end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As String Return b?.Count.ToString() End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess4() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?.[|Count|].ToString() end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As String Return b?.Count.ToString() End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess5() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?.[|ToString|]()?.ToString() end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As String Return b?.ToString()?.ToString() End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess6() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?.ToString()?.[|ToString|]() end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As String Return b?.ToString()?.ToString() End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess7() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = b?[|(0)|] end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new List(of integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As List(Of Integer)) As Integer? Return b?(0) End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess8() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic class C sub Test() dim b as new Dictionary(of string, integer) dim x = b?![|a|] end sub end class", " imports System imports System.Collections.Generic class C sub Test() dim b as new Dictionary(of string, integer) dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As Dictionary(Of String, Integer)) As Integer? Return b?!a End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess9() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic imports System.Xml.Linq class C sub Test() dim b as XElement = nothing dim x = b?.[|<e>|] end sub end class", " imports System imports System.Collections.Generic imports System.Xml.Linq class C sub Test() dim b as XElement = nothing dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As XElement) As IEnumerable(Of XElement) Return b?.<e> End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/41895")> Public Async Function TestConditionalAccess10() As Task Await TestInRegularAndScriptAsync(" imports System imports System.Collections.Generic imports System.Xml.Linq class C sub Test() dim b as XElement = nothing dim x = b?.[|@e|] end sub end class", " imports System imports System.Collections.Generic imports System.Xml.Linq class C sub Test() dim b as XElement = nothing dim x = {|Rename:GetX|}(b) end sub Private Shared Function GetX(b As XElement) As String Return b?.@e End Function end class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/33618")> Public Function TestPreferMePreference_NotForInstanceMethodWhenOff() As Task Return TestInRegularAndScriptAsync( " Imports System class Program dim i as integer public sub M() [|Console.WriteLine(i)|] end sub end class ", " Imports System class Program dim i as integer public sub M() {|Rename:NewMethod|}() end sub Private Sub NewMethod() Console.WriteLine(i) End Sub end class ", New TestParameters(options:=New OptionsCollection(LanguageNames.VisualBasic) From { {CodeStyleOptions2.QualifyMethodAccess, CodeStyleOption2.FalseWithSilentEnforcement} })) End Function <Theory, CombinatorialData, WorkItem("https://github.com/dotnet/roslyn/issues/33618")> Public Async Function TestPreferThisPreference_ForInstanceMethodWhenOn(diagnostic As ReportDiagnostic) As Task If diagnostic = ReportDiagnostic.Default Then Return End If Await TestInRegularAndScriptAsync( " Imports System class Program dim i as integer public sub M() [|Console.WriteLine(i)|] end sub end class ", " Imports System class Program dim i as integer public sub M() Me.{|Rename:NewMethod|}() end sub Private Sub NewMethod() Console.WriteLine(i) End Sub end class ", New TestParameters(options:=New OptionsCollection(LanguageNames.VisualBasic) From { {CodeStyleOptions2.QualifyMethodAccess, New CodeStyleOption2(Of Boolean)(True, New NotificationOption2(diagnostic, True))} })) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/33618")> Public Function TestPreferThisPreference_NotForStaticMethodWhenOn() As Task Return TestInRegularAndScriptAsync( " Imports System class Program public sub M() [|Console.WriteLine()|] end sub end class ", " Imports System class Program public sub M() {|Rename:NewMethod|}() end sub Private Shared Sub NewMethod() Console.WriteLine() End Sub end class ", New TestParameters(options:=New OptionsCollection(LanguageNames.VisualBasic) From { {CodeStyleOptions2.QualifyMethodAccess, CodeStyleOption2.FalseWithSilentEnforcement} })) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/20088")> Public Async Function TestInElseIfBlock1() As Task Await TestInRegularAndScriptAsync( "Public Class Class1 Private Function Method(arg As Integer?) As Boolean Dim something As Boolean If arg.HasValue Then something = True ElseIf arg.Value < 50 Then [|something = arg.Value > 15|] Else something = False End If Return something End Function End Class", "Public Class Class1 Private Function Method(arg As Integer?) As Boolean Dim something As Boolean If arg.HasValue Then something = True ElseIf arg.Value < 50 Then something = {|Rename:NewMethod|}(arg) Else something = False End If Return something End Function Private Shared Function NewMethod(arg As Integer?) As Boolean Return arg.Value > 15 End Function End Class") End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/20088")> Public Async Function TestInElseIfBlock2() As Task Await TestInRegularAndScriptAsync( "Public Class Class1 Private Function Method(arg As Integer?) As Boolean Dim something As Boolean If arg.HasValue Then something = True ElseIf arg.Value < 50 Then [| something = arg.Value > 15|] Else something = False End If Return something End Function End Class", "Public Class Class1 Private Function Method(arg As Integer?) As Boolean Dim something As Boolean If arg.HasValue Then something = True ElseIf arg.Value < 50 Then something = {|Rename:NewMethod|}(arg) Else something = False End If Return something End Function Private Shared Function NewMethod(arg As Integer?) As Boolean Return arg.Value > 15 End Function End Class") End Function End Class End Namespace