/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Features/VisualBasicTest/ConvertForEachToFor/ConvertForEachToForTests.vb
852 строки
21 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.CodeRefactorings Imports Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.CodeRefactorings Imports Microsoft.CodeAnalysis.VisualBasic.ConvertForEachToFor Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.ConvertForEachToFor <Trait(Traits.Feature, Traits.Features.CodeActionsConvertForEachToFor)> Partial Public Class ConvertForEachToForTests Inherits AbstractVisualBasicCodeActionTest_NoEditor Protected Overrides Function CreateCodeRefactoringProvider(workspace As TestWorkspace, parameters As TestParameters) As CodeRefactoringProvider Return New VisualBasicConvertForEachToForCodeRefactoringProvider() End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function EmptyBlockBody() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each [||] a In array Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function EmptyBody() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each [||] a In array : Next End Sub End Class " Await TestMissingInRegularAndScriptAsync(initial) End Function <Fact> Public Async Function Body() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each [||] a In array : Console.WriteLine(a) : Next End Sub End Class " Await TestMissingInRegularAndScriptAsync(initial) End Function <Fact> Public Async Function BlockBody() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each [||] a In array Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function Comment() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} ' comment For Each [||] a In array ' comment Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} ' comment For {|Rename:i|} = 0 To array.Length - 1 ' comment Dim a = array(i) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function Comment2() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each [||] a In array ' comment Console.WriteLine(a) Next ' comment End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) ' comment Console.WriteLine(a) Next ' comment End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function Comment3() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each [||] a In array Console.WriteLine(a) Next a ' comment End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Console.WriteLine(a) Next i ' comment End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function Comment4() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer() {1, 2, 3} ' test Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 ' test Dim a = array(i) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function Comment7() As Task Dim initial = " Class Test Sub Method() ' test For Each [||] a In New Integer() {1, 2, 3} Next End Sub End Class " Dim expected = " Class Test Sub Method() ' test Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function TestCommentsLiveBetweenForEachAndArrayDeclaration() As Task Dim initial = " Class Test Sub Method() For Each [||] a ' test In ' test New Integer() {1, 2, 3} Next End Sub End Class " Dim Expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, Expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function CommentNotSupportedCommentsAfterLineContinuation() As Task Dim initial = " Class Test Sub Method() For Each [||] a _ ' test In ' test New Integer() {1, 2, 3} Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function LineContinuation() As Task Dim initial = " Class Test Sub Method() For Each [||] a _ In New Integer() {1, 2, 3} Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function CollectionStatement() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer() {1, 2, 3} Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function CollectionConflict() As Task Dim initial = " Class Test Sub Method() Dim array = 1 For Each [||] a In New Integer() {1, 2, 3} Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = 1 Dim {|Rename:array1|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array1.Length - 1 Dim a = array1(i) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function IndexConflict() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer() {1, 2, 3} Dim i = 1 Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i1|} = 0 To array.Length - 1 Dim a = array(i1) Dim i = 1 Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function VariableWritten() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer() {1, 2, 3} a = 1 Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 {|Warning:Dim a = array(i)|} a = 1 Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function Public Async Function StructPropertyReadFromAndAssignedToLocal() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer?() {1, 2, 3} Dim b = a.Value Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer?() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Dim b = a.Value Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function StructPropertyRead() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer?() {1, 2, 3} a.Value Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer?() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) a.Value Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function WrongCaretPosition() As Task Dim initial = " Class Test Sub Method() For Each a In New Integer() {1, 2, 3} [||] Next End Sub End Class " Await TestMissingInRegularAndScriptAsync(initial) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> <WorkItem("https://github.com/dotnet/roslyn/issues/35525")> Public Async Function TestBefore() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} [||] For Each a In array Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> <WorkItem("https://github.com/dotnet/roslyn/issues/35525")> Public Async Function TestAfter() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For Each a In array [||] Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> <WorkItem("https://github.com/dotnet/roslyn/issues/35525")> Public Async Function TestSelection() As Task Dim initial = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} [|For Each a In array Next|] End Sub End Class " Dim expected = " Class Test Sub Method() Dim array = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function Field() As Task Dim initial = " Class Test Dim list As Integer() = New Integer() {1, 2, 3} Sub Method() For Each [||] a In list Next End Sub End Class " Dim expected = " Class Test Dim list As Integer() = New Integer() {1, 2, 3} Sub Method() For {|Rename:i|} = 0 To list.Length - 1 Dim a = list(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function [Interface]() As Task Dim initial = " Imports System.Collections.Generic Class Test Sub Method() Dim list = DirectCast(New Integer() {1, 2, 3}, IList(Of Integer)) For [||] Each a In list Next End Sub End Class " Dim expected = " Imports System.Collections.Generic Class Test Sub Method() Dim list = DirectCast(New Integer() {1, 2, 3}, IList(Of Integer)) For {|Rename:i|} = 0 To list.Count - 1 Dim a = list(i) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function ExplicitInterface() As Task Dim initial = " Imports System Imports System.Collections Imports System.Collections.Generic Class Test Sub Method() Dim list = New Explicit() For [||] Each a In list Console.WriteLine(a) Next End Sub End Class Class Explicit Implements IReadOnlyList(Of Integer) Default Public ReadOnly Property ItemExplicit(index As Integer) As Integer Implements IReadOnlyList(Of Integer).Item Get Throw New NotImplementedException() End Get End Property Public ReadOnly Property CountExplicit As Integer Implements IReadOnlyCollection(Of Integer).Count Get Throw New NotImplementedException() End Get End Property Public Function GetEnumeratorExplicit() As IEnumerator(Of Integer) Implements IEnumerable(Of Integer).GetEnumerator Throw New NotImplementedException() End Function Private Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator Throw New NotImplementedException() End Function End Class " Dim expected = " Imports System Imports System.Collections Imports System.Collections.Generic Class Test Sub Method() Dim list = New Explicit() Dim {|Rename:list1|} = DirectCast(list, IReadOnlyList(Of Integer)) For {|Rename:i|} = 0 To list1.Count - 1 Dim a = list1(i) Console.WriteLine(a) Next End Sub End Class Class Explicit Implements IReadOnlyList(Of Integer) Default Public ReadOnly Property ItemExplicit(index As Integer) As Integer Implements IReadOnlyList(Of Integer).Item Get Throw New NotImplementedException() End Get End Property Public ReadOnly Property CountExplicit As Integer Implements IReadOnlyCollection(Of Integer).Count Get Throw New NotImplementedException() End Get End Property Public Function GetEnumeratorExplicit() As IEnumerator(Of Integer) Implements IEnumerable(Of Integer).GetEnumerator Throw New NotImplementedException() End Function Private Function IEnumerable_GetEnumerator() As IEnumerator Implements IEnumerable.GetEnumerator Throw New NotImplementedException() End Function End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function MultipleNext() As Task Dim initial = " Class Test Sub Method() For Each a [||] In New Integer() {} For Each b In New Integer() {} Console.WriteLine(a) Next b, a End Sub End Class" Await TestMissingInRegularAndScriptAsync(initial) End Function <Fact> Public Async Function MultipleNext2() As Task Dim initial = " Class Test Sub Method() For Each a In New Integer() {} For Each [||] b In New Integer() {} Console.WriteLine(a) Next b, a End Sub End Class" Await TestMissingInRegularAndScriptAsync(initial) End Function <Fact> Public Async Function WrongNext() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer() {} Console.WriteLine(a) Next b End Sub End Class" Await TestMissingInRegularAndScriptAsync(initial) End Function <Fact, WorkItem("https://github.com/dotnet/roslyn/issues/31621")> Public Async Function KeepNext() As Task Dim initial = " Class Test Sub Method() For Each [||] a In New Integer() {1, 2, 3} Next a End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a = array(i) Next i End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function IndexConflict2() As Task Dim initial = " Class Test Sub Method() For Each [||] i In New Integer() {1, 2, 3} Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i1|} = 0 To array.Length - 1 Dim i = array(i1) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function UseTypeAsUsedInForeach() As Task Dim initial = " Class Test Sub Method() For Each [||] a As Integer In New Integer() {1, 2, 3} Console.WriteLine(a) Next End Sub End Class " Dim expected = " Class Test Sub Method() Dim {|Rename:array|} = New Integer() {1, 2, 3} For {|Rename:i|} = 0 To array.Length - 1 Dim a As Integer = array(i) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function <Fact> Public Async Function UniqueLocalName() As Task Dim initial = " Imports System Imports System.Collections.Generic Class Test Sub Method() For Each [||] a In New List(Of Integer)() Console.WriteLine(a) Next End Sub End Class " Dim expected = " Imports System Imports System.Collections.Generic Class Test Sub Method() Dim {|Rename:list|} = New List(Of Integer)() For {|Rename:i|} = 0 To list.Count - 1 Dim a = list(i) Console.WriteLine(a) Next End Sub End Class " Await TestInRegularAndScriptAsync(initial, expected) End Function End Class End Namespace