/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/VisualBasicTest/ExitContinue/ExitContinueCodeActionTests.vb
876 строк
16 KB
Cyrus Najmabadi
Organize VB imports
27 июн 2025, 21:53
27 июн 2025, 21:53
e9c47fd
Код
Авторство
О чём код?
' 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.CodeFixes Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.VisualBasic.CodeFixes.IncorrectExitContinue Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.Diagnostics.ExitContinue <Trait(Traits.Feature, Traits.Features.CodeActionsCorrectExitContinue)> Public Class ExitContinueCodeActionTests Inherits AbstractVisualBasicDiagnosticProviderBasedUserDiagnosticTest_NoEditor Friend Overrides Function CreateDiagnosticProviderAndFixer(workspace As Workspace) As (DiagnosticAnalyzer, CodeFixProvider) Return (Nothing, New IncorrectExitContinueCodeFixProvider()) End Function <Fact> Public Async Function TestExpectedExitKind_Sub() As Task Dim code = <File> Class C Sub goo() [|Exit|] End Sub End Class </File> Dim expected = <File> Class C Sub goo() Exit Sub End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedExitKind_While() As Task Dim code = <File> Class C Sub goo() While True [|Exit|] End While End Sub End Class </File> Dim expected = <File> Class C Sub goo() While True Exit While End While End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedExitKind_For() As Task Dim code = <File> Class C Sub goo() For x as Integer = 1 to 10 [|Exit|] Next End Sub End Class </File> Dim expected = <File> Class C Sub goo() For x as Integer = 1 to 10 Exit For Next End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedExitKind_Do() As Task Dim code = <File> Class C Sub goo() Do While True [|Exit|] Loop End Sub End Class </File> Dim expected = <File> Class C Sub goo() Do While True Exit Do Loop End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitPropNot() As Task Dim code = <File> Class C Property P as Integer Get [|Exit|] End Get Set End Set End Property Exit Class </File> Dim expected = <File> Class C Property P as Integer Get Exit Property End Get Set End Set End Property Exit Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedExitKind_Try() As Task Dim code = <File> Class C Sub Goo() Try [|Exit|] Catch ex As Exception End Try End Sub End Class </File> Dim expected = <File> Class C Sub Goo() Try Exit Try Catch ex As Exception End Try End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedExitKind_Function() As Task Dim code = <File> Class C Function x() as Integer [|Exit|] End Function End Class </File> Dim expected = <File> Class C Function x() as Integer Exit Function End Function End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitSubOfFunc() As Task Dim code = <File> Class C Function x() as Integer [|Exit Sub|] End Function End Class </File> Dim expected = <File> Class C Function x() as Integer Exit Function End Function End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitFuncOfSub() As Task Dim code = <File> Class C Sub Goo() [|Exit Function|] End Sub End Class </File> Dim expected = <File> Class C Sub Goo() Exit Sub End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitDoNotWithinDo() As Task Dim code = <File> Class C Sub Goo() While True [|Exit Do|] End While End Sub End Class </File> Dim expected = <File> Class C Sub Goo() While True Exit While End While End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitDoNotWithinDo_For() As Task Dim code = <File> Class C Sub Goo() For x as Integer = 1 to 10 [|Exit Do|] Next End Sub End Class </File> Dim expected = <File> Class C Sub Goo() For x as Integer = 1 to 10 Exit For Next End Sub End Class </File> Await TestAsync(code, expected, index:=0) End Function <Fact> Public Async Function TestExitWhileNotWithinWhile() As Task Dim code = <File> Class C Sub Goo() Do While True [|Exit While|] Loop End Sub End Class </File> Dim expected = <File> Class C Sub Goo() Do While True Exit Do Loop End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitDoNotWithinDo_Try() As Task Dim code = <File> Imports System Class C Sub Goo() Try [|Exit Do|] Catch ex As Exception End Try End Sub End Class </File> Dim expected = <File> Imports System Class C Sub Goo() Try Exit Try Catch ex As Exception End Try End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitTryNotWithinTry() As Task Dim code = <File> Class C Sub Goo [|Exit Try|] End Sub End Class </File> Dim expected = <File> Class C Sub Goo Exit Sub End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExitChangeToSelect() As Task Dim code = <File> Class C Sub Goo() Dim i as Integer = 0 Select Case i Case 0 [|Exit Do|] End Select End Sub End Class </File> Dim expected = <File> Class C Sub Goo() Dim i as Integer = 0 Select Case i Case 0 Exit Select End Select End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestContinueDoNotWithinDo() As Task Dim code = <File> Class C Sub Goo() Dim i as Integer = 0 Select Case i Case 0 [|Continue Do|] End Select End Sub End Class </File> Dim expected = <File> Class C Sub Goo() Dim i as Integer = 0 Select Case i Case 0 End Select End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestContinueForNotWithinFor() As Task Dim code = <File> Class C Sub Goo Dim i as Integer = 0 Select Case i Case 0 [|Continue For|] End Select End Sub End Class </File> Dim expected = <File> Class C Sub Goo Dim i as Integer = 0 Select Case i Case 0 End Select End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestContinueWhileNotWithinWhile() As Task Dim code = <File> Class C Sub Goo() Dim i as Integer = 0 Select Case i Case 0 [|Continue While|] End Select End Sub End Class </File> Dim expected = <File> Class C Sub Goo() Dim i as Integer = 0 Select Case i Case 0 End Select End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedContinueKindWhile() As Task Dim code = <File> Class C Sub Goo() While True [|Continue|] End While End Sub End Class </File> Dim expected = <File> Class C Sub Goo() While True Continue While End While End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedContinueKindFor() As Task Dim code = <File> Class C Sub Goo For x as integer = 1 to 10 [|Continue|] Next End Sub End Class </File> Dim expected = <File> Class C Sub Goo For x as integer = 1 to 10 Continue For Next End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedContinueKindForEach() As Task Dim code = <File> Class C Sub Goo For Each x in {1} [|Continue|] Next End Sub End Class </File> Dim expected = <File> Class C Sub Goo For Each x in {1} Continue For Next End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedContinueKindDo() As Task Dim code = <File> Class C Sub Goo Do While True [|Continue|] Loop End Sub End Class </File> Dim expected = <File> Class C Sub Goo Do While True Continue Do Loop End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedContinueKindDo_ReplaceFor() As Task Dim code = <File> Class C Sub Goo Do While True [|Continue For|] Loop End Sub End Class </File> Dim expected = <File> Class C Sub Goo Do While True Continue Do Loop End Sub End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedExitKindDo_UseSub() As Task Dim code = <File> Class C Sub Goo Do While True [|Exit|] Loop End Sub End Class </File> Dim expected = <File> Class C Sub Goo Do While True Exit Sub Loop End Sub End Class </File> Await TestAsync(code, expected, index:=1) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547094")> Public Async Function TestDoNotTryToExitFinally() As Task Dim code = <File> Imports System Class C Function Goo() As Integer Try Catch ex As Exception Finally [|Exit|] End Try End Function End Class </File> Dim expected = <File> Imports System Class C Function Goo() As Integer Try Catch ex As Exception Finally End Try End Function End Class </File> Await TestAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547110")> Public Async Function TestMissingExitTokenInNonExitableBlock() As Task Dim code = <File> Imports System Class C Function Goo() As Integer Try If True Then [|Exit|] End If Catch ex As Exception Finally End Try End Function End Class </File> Dim expected = <File> Imports System Class C Function Goo() As Integer Try If True Then Exit Try End If Catch ex As Exception Finally End Try End Function End Class </File> Await TestAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547100")> Public Async Function TestNotInValidCaseElse() As Task Await TestMissingInRegularAndScriptAsync( "Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) For Each a In args Select a Case Else [|Exit Select|] ' here End Select Next End Sub End Module") End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547099")> Public Async Function TestCollapseDuplicateBlockKinds() As Task Await TestActionCountAsync( "Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Do Do While True [|Exit Function|] ' here Loop Loop End Sub End Module", 3) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547092")> Public Async Function TestReplaceInvalidTokenExit() As Task Dim code = <File> Imports System Class C Function Goo() As Integer Try If True Then [|Exit |]blah End If Catch ex As Exception Finally End Try End Function End Class </File> Dim expected = <File> Imports System Class C Function Goo() As Integer Try If True Then Exit Try End If Catch ex As Exception Finally End Try End Function End Class </File> Await TestAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/547092")> Public Async Function TestReplaceInvalidTokenContinue() As Task Dim code = <File> Imports System Class C Function Goo() As Integer Do [|Continue |]blah Loop End Function End Class </File> Dim expected = <File> Imports System Class C Function Goo() As Integer Do Continue Do Loop End Function End Class </File> Await TestAsync(code, expected) End Function <Fact> Public Async Function TestExpectedActionDescriptions1() As Task Dim code = <File> Class C Sub goo() [|Exit Function|] End Sub End Class </File> Await TestExactActionSetOfferedAsync(code.ConvertTestSourceTag(), {String.Format(FeaturesResources.Change_0_to_1, "Function", "Sub"), String.Format(VBFeaturesResources.Delete_the_0_statement1, "Exit Function")}) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/531354")> Public Async Function TestExpectedActionDescriptions2() As Task Dim code = <File> Class C Sub goo() [|Exit |] End Sub End Class </File> Await TestExactActionSetOfferedAsync(code.ConvertTestSourceTag(), {String.Format(VBFeaturesResources.Insert_0, "Sub"), String.Format(VBFeaturesResources.Delete_the_0_statement1, "Exit")}) End Function End Class End Namespace