/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/VisualBasicTest/ExtractMethod/ExtractMethodTests.DataFlowAnalysis.vb
5 836 строк
147 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. Namespace Microsoft.CodeAnalysis.Editor.VisualBasic.UnitTests.ExtractMethod Partial Public Class ExtractMethodTests ''' <summary> ''' This contains tests for Extract Method scenarios that depend on Data Flow Analysis API ''' Implements scenarios outlined in /Services/CSharp/Impl/Refactoring/ExtractMethod/ExtractMethodMatrix.xlsx ''' </summary> ''' <remarks></remarks> <UseExportProvider> <Trait(Traits.Feature, Traits.Features.ExtractMethod)> Public Class DataFlowPass <Fact> Public Async Function TestExtractMethod1() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim i As Integer i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer = 10 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod2() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim i As Integer = 10 Dim i2 As Integer = 10|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer = 10 Dim i2 As Integer = 10 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod3() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 [|Dim i2 As Integer = i|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 NewMethod(i) End Sub Private Shared Sub NewMethod(i As Integer) Dim i2 As Integer = i End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod4() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 Dim i2 As Integer = i [|i2 += i|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 Dim i2 As Integer = i i2 = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer, i2 As Integer) As Integer i2 += i Return i2 End Function End Class</text> Await TestExtractMethodAsync(code, expected, temporaryFailing:=True) End Function <Fact> Public Async Function TestExtractMethod5() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 Dim i2 As Integer = i [|i2 = i|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 Dim i2 As Integer = i i2 = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod6() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Dim field As Integer Sub Test(args As String()) Dim i As Integer = 10 [|field = i|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Dim field As Integer Sub Test(args As String()) Dim i As Integer = 10 NewMethod(i) End Sub Private Sub NewMethod(i As Integer) field = i End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod7() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim a As String() = Nothing [|Test(a)|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim a As String() = Nothing NewMethod(a) End Sub Private Sub NewMethod(a() As String) Test(a) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod8() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Test(args As String()) Dim a As String() = Nothing [|Test(a)|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Test(args As String()) Dim a As String() = Nothing NewMethod(a) End Sub Private Shared Sub NewMethod(a() As String) Test(a) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod9() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer Dim s As String [|i = 10 s = args(0) + i.ToString()|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer Dim s As String NewMethod(args, i, s) End Sub Private Shared Sub NewMethod(args() As String, ByRef i As Integer, ByRef s As String) i = 10 s = args(0) + i.ToString() End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod10() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim i As Integer i = 10 Dim s As String s = args(0) + i.ToString()|] Console.WriteLine(s) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim s As String = NewMethod(args) Console.WriteLine(s) End Sub Private Shared Function NewMethod(args() As String) As String Dim i As Integer = 10 Dim s As String s = args(0) + i.ToString() Return s End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod11() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim i As Integer Dim i2 As Integer = 10|] i = 10 End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer NewMethod() i = 10 End Sub Private Shared Sub NewMethod() Dim i2 As Integer = 10 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod11_1() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim i As Integer Dim i2 As Integer = 10|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer Dim i2 As Integer = 10 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod12() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 [|i = i + 1|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = 10 i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer i = i + 1 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod13() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) For Each s In args [|Console.WriteLine(s)|] Next End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) For Each s In args NewMethod(s) Next End Sub Private Shared Sub NewMethod(s As String) Console.WriteLine(s) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod14() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) i = 1 While i < 10 [|Console.WriteLine(i)|] i = i + 1 End While End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) i = 1 While i < 10 NewMethod(i) i = i + 1 End While End Sub Private Shared Sub NewMethod(i As Integer) Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected, temporaryFailing:=True) End Function <Fact> Public Async Function TestExtractMethod15() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim s As Integer = 10, i As Integer = 1 Dim b As Integer = s + i|] System.Console.WriteLine(s) System.Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim s As Integer = Nothing Dim i As Integer = Nothing NewMethod(s, i) System.Console.WriteLine(s) System.Console.WriteLine(i) End Sub Private Shared Sub NewMethod(ByRef s As Integer, ByRef i As Integer) s = 10 i = 1 Dim b As Integer = s + i End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod16() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) [|Dim i As Integer = 1|] System.Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(args As String()) Dim i As Integer = NewMethod() System.Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539197")> Public Async Function TestExtractMethod17() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(Of T)(ByRef t2 As T) [|Dim t1 As T Test(t1) t2 = t1|] System.Console.WriteLine(t1.ToString()) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(Of T)(ByRef t2 As T) Dim t1 As T = Nothing NewMethod(t2, t1) System.Console.WriteLine(t1.ToString()) End Sub Private Sub NewMethod(Of T)(ByRef t2 As T, ByRef t1 As T) Test(t1) t2 = t1 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/527775")> Public Async Function TestExtractMethod18() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(Of T)(ByRef t3 As T) [|Dim t1 As T = GetValue(t3)|] System.Console.WriteLine(t1.ToString()) End Sub Private Function GetValue(Of T)(ByRef t2 As T) As T Return t2 End Function End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(Of T)(ByRef t3 As T) Dim t1 As T = Nothing NewMethod(t3, t1) System.Console.WriteLine(t1.ToString()) End Sub Private Sub NewMethod(Of T)(ByRef t3 As T, ByRef t1 As T) t1 = GetValue(t3) End Sub Private Function GetValue(Of T)(ByRef t2 As T) As T Return t2 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod19() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() [|Dim i As Integer = 1|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer = 1 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod20() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Test() [|Dim i As Integer = 1|] End Sub End Module</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Test() NewMethod() End Sub Private Sub NewMethod() Dim i As Integer = 1 End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod21() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() [|Dim i As Integer = 1|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer = 1 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod22() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() Dim i As Integer [|Dim b As Integer = 10 If b < 10 i = 5 End If|] i = 6 Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() Dim i As Integer i = NewMethod(i) i = 6 Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Dim b As Integer = 10 If b < 10 i = 5 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod23() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main(args As String()) If True [|Console.WriteLine(args(0).ToString())|] End If End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main(args As String()) If True NewMethod(args) End If End Sub Private Shared Sub NewMethod(args() As String) Console.WriteLine(args(0).ToString()) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod24() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) Dim y As Integer = [|Integer.Parse(args(0).ToString())|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) Dim y As Integer = GetY(args) End Sub Private Shared Function GetY(args() As String) As Integer Return Integer.Parse(args(0).ToString()) End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod25() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main(args As String()) If([|New Integer(){ 1, 2, 3 }|]).Any() Then Return End If End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main(args As String()) If (NewMethod()).Any() Then Return End If End Sub Private Shared Function NewMethod() As Integer() Return New Integer() {1, 2, 3} End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod26() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main(args As String()) If [|(New Integer(){ 1, 2, 3 })|].Any() Return End If End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main(args As String()) If NewMethod().Any() Return End If End Sub Private Shared Function NewMethod() As Integer() Return (New Integer() {1, 2, 3}) End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod27() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() Dim i As Integer = 1 [|Dim b As Integer = 10 If b < 10 i = 5 End If|] i = 6 Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test() Dim i As Integer = 1 i = NewMethod(i) i = 6 Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Dim b As Integer = 10 If b < 10 i = 5 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540046")> Public Async Function TestExtractMethod28() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Function Test() As Integer [|Return 1|] End Function End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Function Test() As Integer Return NewMethod() End Function Private Shared Function NewMethod() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540046")> Public Async Function TestExtractMethod29() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Function Test() As Integer Dim i As Integer = 0 [|If i < 0 Return 1 Else Return 0 End If|] End Function End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Function Test() As Integer Dim i As Integer = 0 Return NewMethod(i) End Function Private Shared Function NewMethod(i As Integer) As Integer If i < 0 Return 1 Else Return 0 End If End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod30() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(ByRef i As Integer) [|i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Sub Test(ByRef i As Integer) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod31() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Text Class Program Sub Test() Dim builder As StringBuilder = New StringBuilder() [|builder.Append("Hello") builder.Append("From") builder.Append("Roslyn")|] Return builder.ToString() End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Text Class Program Sub Test() Dim builder As StringBuilder = New StringBuilder() NewMethod(builder) Return builder.ToString() End Sub Private Shared Sub NewMethod(builder As StringBuilder) builder.Append("Hello") builder.Append("From") builder.Append("Roslyn") End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod32() As Task Dim code = <text>Imports System Class Program Sub Test() Dim v As Integer = 0 Console.Write([|v|]) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test() Dim v As Integer = 0 Console.Write(GetV(v)) End Sub Private Shared Function GetV(v As Integer) As Integer Return v End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod34() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) Dim x As Integer = 1 Dim y As Integer = 2 Dim z As Integer = [|x + y|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) Dim x As Integer = 1 Dim y As Integer = 2 Dim z As Integer = GetZ(x, y) End Sub Private Shared Function GetZ(x As Integer, y As Integer) As Integer Return x + y End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538239")> Public Async Function TestExtractMethod35() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) Dim r As Integer() = [|New Integer(){ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 }|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) Dim r As Integer() = GetR() End Sub Private Shared Function GetR() As Integer() Return New Integer() {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod36() As Task Dim code = <text>Imports System Class Program Shared Sub Main(ByRef i As Integer) [|i = 1|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(ByRef i As Integer) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethod37() As Task Dim code = <text>Imports System Class Program Shared Sub Main(ByRef i As Integer) [|i = 1|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(ByRef i As Integer) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538231")> Public Async Function TestExtractMethod38() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) ' int v = 0; ' while (true) Dim unassigned As Integer ' { ' NewMethod(v++); [|unassigned = unassigned + 10|] ' NewMethod(ReturnVal(v++)); ' } End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) ' int v = 0; ' while (true) Dim unassigned As Integer ' { ' NewMethod(v++); unassigned = NewMethod(unassigned) ' NewMethod(ReturnVal(v++)); ' } End Sub Private Shared Function NewMethod(unassigned As Integer) As Integer unassigned = unassigned + 10 Return unassigned End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538231")> Public Async Function TestExtractMethod39() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) ' int v = 0; ' while (true) Dim unassigned As Integer ' { [|' NewMethod(v++); unassigned = unassigned + 10 ' NewMethod(ReturnVal(v++));|] ' } End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) ' int v = 0; ' while (true) Dim unassigned As Integer ' { unassigned = NewMethod(unassigned) ' } End Sub Private Shared Function NewMethod(unassigned As Integer) As Integer ' NewMethod(v++); unassigned = unassigned + 10 ' NewMethod(ReturnVal(v++)); Return unassigned End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538303")> Public Async Function ExtractMethod40() As Task Dim code = <text>Class Program Shared Sub Main(args As String()) [|Dim x As Integer|] End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538314")> Public Async Function TestExtractMethod41() As Task Dim code = <text>Class Program Shared Sub Main(args As String()) Dim x As Integer = 10 [|Dim y As Integer If x = 10 y = 5 End If|] Console.WriteLine(y) End Sub End Class</text> Dim expected = <text>Class Program Shared Sub Main(args As String()) Dim x As Integer = 10 Dim y As Integer = NewMethod(x) Console.WriteLine(y) End Sub Private Shared Function NewMethod(x As Integer) As Integer Dim y As Integer If x = 10 y = 5 End If Return y End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/527499")> Public Async Function TestBugFix3992() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer = 1 [|While False Console.WriteLine(x) End While|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer = 1 NewMethod(x) End Sub Private Shared Sub NewMethod(x As Integer) While False Console.WriteLine(x) End While End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538327")> Public Async Function TestExtractMethod42() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) Dim a As Integer, b As Integer [|a = 5 b = 7|] Console.Write(a + b) End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) Dim a As Integer, b As Integer NewMethod(a, b) Console.Write(a + b) End Sub Private Shared Sub NewMethod(ByRef a As Integer, ByRef b As Integer) a = 5 b = 7 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538327")> Public Async Function TestExtractMethod43() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) Dim a As Integer, b As Integer [|a = 5 b = 7 Dim c As Integer Dim d As Integer Dim e As Integer, f As Integer c = 1 d = 1 e = 1 f = 1|] Console.Write(a + b) End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) Dim a As Integer, b As Integer NewMethod(a, b) Console.Write(a + b) End Sub Private Shared Sub NewMethod(ByRef a As Integer, ByRef b As Integer) a = 5 b = 7 Dim c As Integer Dim d As Integer Dim e As Integer, f As Integer c = 1 d = 1 e = 1 f = 1 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538328")> Public Async Function TestExtractMethod44() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) Dim a As Integer ' comment [|a = 1|] ' comment Console.Write(a) End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main(args As String()) Dim a As Integer ' comment a = NewMethod() ' comment Console.Write(a) End Sub Private Shared Function NewMethod() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538393")> Public Async Function TestExtractMethod46() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer = 1 [|Goo(x)|] Console.WriteLine(x) End Sub Shared Sub Goo(ByRef x As Integer) x = x + 1 End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer = 1 x = NewMethod(x) Console.WriteLine(x) End Sub Private Shared Function NewMethod(x As Integer) As Integer Goo(x) Return x End Function Shared Sub Goo(ByRef x As Integer) x = x + 1 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538399")> Public Async Function TestExtractMethod47() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer = 1 [|While True Console.WriteLine(x) End While|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer = 1 NewMethod(x) End Sub Private Shared Sub NewMethod(x As Integer) While True Console.WriteLine(x) End While End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538401")> Public Async Function TestExtractMethod48() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer() = [|{ 1, 2, 3 }|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Integer() = GetX() End Sub Private Shared Function GetX() As Integer() Return {1, 2, 3} End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538405")> Public Async Function TestExtractMethod49() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Goo(GetX As Integer) Dim x As Integer = [|1|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Goo(GetX As Integer) Dim x As Integer = GetX1() End Sub Private Shared Function GetX1() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestExtractMethodNormalProperty() As Task Dim code = <text>Class [Class] Private Shared name As String Public Shared Property Names As String Get Return 1 End Get Set name = value End Set End Property Shared Sub Goo(i As Integer) Dim str As String = [|[Class].Names|] End Sub End Class</text> Dim expected = <text>Class [Class] Private Shared name As String Public Shared Property Names As String Get Return 1 End Get Set name = value End Set End Property Shared Sub Goo(i As Integer) Dim str As String = GetStr() End Sub Private Shared Function GetStr() As String Return [Class].Names End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538932")> Public Async Function TestExtractMethodAutoProperty() As Task Dim code = <text>Class [Class] Public Property Name As String Shared Sub Main() Dim str As String = New [Class]().[|Name|] End Sub End Class</text> Dim expected = <text>Class [Class] Public Property Name As String Shared Sub Main() Dim str As String = GetStr() End Sub Private Shared Function GetStr() As String Return New [Class]().Name End Function End Class</text> ' given span is not an expression, use suggestion Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538402")> Public Async Function TestBugFix3994() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Byte = [|1|] End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Byte = GetX() End Sub Private Shared Function GetX() As Byte Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538404")> Public Async Function TestBugFix3996() As Task Dim code = <text>Class A(Of T) Class D Inherits A(Of T) End Class Class B End Class Shared Function Goo() As D.B Return Nothing End Function Class C(Of T2) Shared Sub Bar() Dim x As D.B = [|Goo()|] End Sub End Class End Class</text> Dim expected = <text>Class A(Of T) Class D Inherits A(Of T) End Class Class B End Class Shared Function Goo() As D.B Return Nothing End Function Class C(Of T2) Shared Sub Bar() Dim x As D.B = GetX() End Sub Private Shared Function GetX() As B Return Goo() End Function End Class End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestInsertionPoint() As Task Dim code = <text>Class Test Sub Method(i As String) Dim y2 As Integer = [|1|] End Sub Sub Method(i As Integer) End Sub End Class</text> Dim expected = <text>Class Test Sub Method(i As String) Dim y2 As Integer = GetY2() End Sub Private Shared Function GetY2() As Integer Return 1 End Function Sub Method(i As Integer) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538980")> Public Async Function TestBugFix4757() As Task Dim code = <text>Class GenericMethod Sub Method(Of T)(t1 As T) Dim a As T [|a = t1|] End Sub End Class</text> Dim expected = <text>Class GenericMethod Sub Method(Of T)(t1 As T) Dim a As T a = NewMethod(t1) End Sub Private Shared Function NewMethod(Of T)(t1 As T) As T Return t1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538980")> Public Async Function TestBugFix4757_2() As Task Dim code = <text>Class GenericMethod(Of T1) Sub Method(Of T)(t1 As T) Dim a As T Dim b As T1 [|a = t1 b = Nothing|] End Sub End Class</text> Dim expected = <text>Class GenericMethod(Of T1) Sub Method(Of T)(t1 As T) Dim a As T Dim b As T1 NewMethod(t1, a, b) End Sub Private Shared Sub NewMethod(Of T)(t1 As T, ByRef a As T, ByRef b As T1) a = t1 b = Nothing End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538980")> Public Async Function TestBugFix4757_3() As Task Dim code = <text>Class GenericMethod Sub Method(Of T, T1)(t1 As T) Dim a1 As T1 Dim a As T [|a = t1 a1 = Nothing|] End Sub End Class</text> Dim expected = <text>Class GenericMethod Sub Method(Of T, T1)(t1 As T) Dim a1 As T1 Dim a As T NewMethod(t1, a1, a) End Sub Private Shared Sub NewMethod(Of T, T1)(t1 As T, ByRef a1 As T1, ByRef a As T) a = t1 a1 = Nothing End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538422")> Public Async Function TestBugFix4758() As Task Dim code = <text>Imports System Class TestOutParameter Sub Method(ByRef x As Integer) x = 5 Console.Write([|x|]) End Sub End Class</text> Dim expected = <text>Imports System Class TestOutParameter Sub Method(ByRef x As Integer) x = 5 Console.Write(GetX(x)) End Sub Private Shared Function GetX(x As Integer) As Integer Return x End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538422")> Public Async Function TestBugFix4758_2() As Task Dim code = <text>Class TestOutParameter Sub Method(ByRef x As Integer) x = 5 Console.Write([|x|]) End Sub End Class</text> Dim expected = <text>Class TestOutParameter Sub Method(ByRef x As Integer) x = 5 Console.Write(GetX(x)) End Sub Private Shared Function GetX(x As Integer) As Integer Return x End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538984")> Public Async Function TestBugFix4761() As Task Dim code = <text>Class A Sub Method() Dim a As System.Func(Of Integer, Integer) = Function(x) [|x * x|] End Sub End Class</text> Dim expected = <text>Class A Sub Method() Dim a As System.Func(Of Integer, Integer) = Function(x) NewMethod(x) End Sub Private Shared Function NewMethod(x As Integer) As Integer Return x * x End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538997")> Public Async Function TestBugFix4779() As Task Dim code = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Func(Of String) = [|s|].ToString End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Func(Of String) = GetS(s).ToString End Sub Private Shared Function GetS(s As String) As String Return s End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538997")> Public Async Function TestBugFix4779_2() As Task Dim code = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f = [|s|].ToString() End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f = GetS(s).ToString() End Sub Private Shared Function GetS(s As String) As String Return s End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem(4780, "DevDiv_Projects/Roslyn")> Public Async Function TestBugFix4780() As Task Dim code = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Object = DirectCast([|s.ToString|], Func(Of String)) End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Object = DirectCast(GetToString(s), Func(Of String)) End Sub Private Shared Function GetToString(s As String) As Func(Of String) Return s.ToString End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539201")> Public Async Function TestBugFix4780_2() As Task Dim code = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Object = DirectCast([|s.ToString()|], String) End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Object = DirectCast(NewMethod(s), String) End Sub Private Shared Function NewMethod(s As String) As String Return s.ToString() End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539201")> Public Async Function TestBugFix4780_3() As Task Dim code = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Object = TryCast([|s.ToString()|], String) End Sub End Class</text> Dim expected = <text>Imports System Class Program Shared Sub Main() Dim s As String = "" Dim f As Object = TryCast(NewMethod(s), String) End Sub Private Shared Function NewMethod(s As String) As String Return s.ToString() End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem(4782, "DevDiv_Projects/Roslyn")> Public Async Function BugFix4782_2() As Task Dim code = <text>Class A(Of T) Class D Inherits A(Of T()) End Class Class B End Class Class C(Of T) Shared Sub Goo() Dim x As D.B = [|New D.B()|] End Sub End Class End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem(4791, "DevDiv_Projects/Roslyn")> Public Async Function TestBugFix4791() As Task Dim code = <text>Class Program Delegate Function Func(a As Integer) As Integer Shared Sub Main(args As String()) Dim v As Func = Function(a As Integer) [|a|] End Sub End Class</text> Dim expected = <text>Class Program Delegate Function Func(a As Integer) As Integer Shared Sub Main(args As String()) Dim v As Func = Function(a As Integer) GetA(a) End Sub Private Shared Function GetA(a As Integer) As Integer Return a End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539019")> Public Async Function TestBugFix4809() As Task Dim code = <text>Class Program Public Sub New() [|Dim x As Integer = 2|] End Sub End Class</text> Dim expected = <text>Class Program Public Sub New() NewMethod() End Sub Private Shared Sub NewMethod() Dim x As Integer = 2 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/551797")> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539029")> <WpfFact(Skip:="551797")> Public Async Function TestBugFix4813() As Task Dim code = <text>Imports System Class Program Public Sub New() Dim o As [Object] = [|New Program()|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Public Sub New() Dim o As [Object] = GetO() End Sub Private Shared Function GetO() As Program Return New Program() End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538425")> Public Async Function TestBugFix4031() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Boolean = True, y As Boolean = True, z As Boolean = True If x While y End While Else [|While z End While|] End If End Sub End Class</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Class Program Shared Sub Main() Dim x As Boolean = True, y As Boolean = True, z As Boolean = True If x While y End While Else NewMethod(z) End If End Sub Private Shared Sub NewMethod(z As Boolean) While z End While End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539029")> Public Async Function TestBugFix4823() As Task Dim code = <text>Class Program Private area As Double = 1.0 Public ReadOnly Property Area As Double Get Return area End Get End Property Public Overrides Function ToString() As String Return String.Format("{0:F2}", [|Area|]) End Function End Class</text> Dim expected = <text>Class Program Private area As Double = 1.0 Public ReadOnly Property Area As Double Get Return area End Get End Property Public Overrides Function ToString() As String Return String.Format("{0:F2}", GetArea()) End Function Private Function GetArea() As Double Return Area End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538985")> Public Async Function TestBugFix4762() As Task Dim code = <text>Class Program Shared Sub Main(args As String()) 'comments [|Dim x As Integer = 2|] End Sub End Class</text> Dim expected = <text>Class Program Shared Sub Main(args As String()) 'comments NewMethod() End Sub Private Shared Sub NewMethod() Dim x As Integer = 2 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/538966")> Public Async Function TestBugFix4744() As Task Dim code = <text>Class Program Shared Sub Main(args As String()) [|Dim x As Integer = 2 'comments|] End Sub End Class</text> Dim expected = <text>Class Program Shared Sub Main(args As String()) NewMethod() End Sub Private Shared Sub NewMethod() Dim x As Integer = 2 'comments End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539049")> Public Async Function TestExtractMethodInProperty1() As Task Dim code = <text>Class C2 Shared Public ReadOnly Property Area As Integer Get Return 1 End Get End Property End Class Class C3 Public Shared ReadOnly Property Area As Integer Get Return [|C2.Area|] End Get End Property End Class</text> Dim expected = <text>Class C2 Shared Public ReadOnly Property Area As Integer Get Return 1 End Get End Property End Class Class C3 Public Shared ReadOnly Property Area As Integer Get Return GetArea() End Get End Property Private Shared Function GetArea() As Integer Return C2.Area End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539049")> Public Async Function TestExtractMethodInProperty2() As Task Dim code = <text>Class C3 Public Shared ReadOnly Property Area As Integer Get [|Dim i As Integer = 10 Return i|] End Get End Property End Class</text> Dim expected = <text>Class C3 Public Shared ReadOnly Property Area As Integer Get Return NewMethod() End Get End Property Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539049")> Public Async Function TestExtractMethodInProperty3() As Task Dim code = <text>Class C3 Public Shared WriteOnly Property Area As Integer Set(value As Integer) [|Dim i As Integer = value|] End Set End Property End Class</text> Dim expected = <text>Class C3 Public Shared WriteOnly Property Area As Integer Set(value As Integer) NewMethod(value) End Set End Property Private Shared Sub NewMethod(value As Integer) Dim i As Integer = value End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoNoYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test1() Dim i As Integer [|If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test1() Dim i As Integer i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoNoYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test2() Dim i As Integer = 0 [|If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test2() Dim i As Integer = 0 i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoNoYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test3() Dim i As Integer While i > 10 End While [|If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test3() Dim i As Integer While i > 10 End While i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoNoYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test4() Dim i As Integer = 10 While i > 10 End While [|If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test4() Dim i As Integer = 10 While i > 10 End While i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoYesYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test4_1() Dim i As Integer [|If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test4_1() Dim i As Integer i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoYesYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test4_2() Dim i As Integer = 10 [|If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test4_2() Dim i As Integer = 10 i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test4_3() Dim i As Integer Console.WriteLine(i) [|If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test4_3() Dim i As Integer Console.WriteLine(i) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test4_4() Dim i As Integer = 10 Console.WriteLine(i) [|If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test4_4() Dim i As Integer = 10 Console.WriteLine(i) i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 0 i = 10 Console.WriteLine(i) End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function MatrixCase_NoNoNoYesNoNoNoNo() As Task Dim code = <text>Imports System Class Program Sub Test5() [|Dim i As Integer|] End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact> Public Async Function MatrixCase_NoNoNoYesNoNoNoYes() As Task Dim code = <text>Imports System Class Program Sub Test6() [|Dim i As Integer|] i = 1 End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoYesNoYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test7() [|Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test7() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoYesNoYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test8() [|Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If|] i = 2 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test8() Dim i As Integer = NewMethod() i = 2 End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoYesYesNoNoNo() As Task Dim code = <text>Imports System Class Program Sub Test9() [|Dim i As Integer Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test9() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoYesYesNoNoYes() As Task Dim code = <text>Imports System Class Program Sub Test10() [|Dim i As Integer Console.WriteLine(i)|] i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test10() Dim i As Integer NewMethod() i = 10 End Sub Private Shared Sub NewMethod() Dim i As Integer Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoYesYesYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test11() [|Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test11() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoNoYesYesYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test12() [|Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i)|] i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test12() Dim i As Integer = NewMethod() i = 10 End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoNoYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test13() Dim i As Integer [|i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test13() Dim i As Integer i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoNoYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test14() Dim i As Integer [|i = 10|] i = 1 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test14() Dim i As Integer i = NewMethod() i = 1 End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoNoYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test15() Dim i As Integer Console.WriteLine(i) [|i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test15() Dim i As Integer Console.WriteLine(i) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoNoYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test16() Dim i As Integer [|i = 10|] i = 10 Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test16() Dim i As Integer i = NewMethod() i = 10 Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoYesYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test16_1() Dim i As Integer [|i = 10 Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test16_1() Dim i As Integer i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoYesYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test16_2() Dim i As Integer = 10 [|i = 10 Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test16_2() Dim i As Integer = 10 i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test16_3() Dim i As Integer Console.WriteLine(i) [|i = 10 Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test16_3() Dim i As Integer Console.WriteLine(i) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test16_4() Dim i As Integer = 10 Console.WriteLine(i) [|i = 10 Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test16_4() Dim i As Integer = 10 Console.WriteLine(i) i = NewMethod() End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesYesNoYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test17() [|Dim i As Integer = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test17() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer = 10 End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesYesNoYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test18() [|Dim i As Integer = 10|] i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test18() Dim i As Integer = NewMethod() i = 10 End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesYesYesYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test19() [|Dim i As Integer = 10 Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test19() NewMethod() End Sub Private Shared Sub NewMethod() Dim i As Integer = 10 Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoNoYesYesYesYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test20() [|Dim i As Integer = 10 Console.WriteLine(i)|] i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test20() Dim i As Integer NewMethod() i = 10 End Sub Private Shared Sub NewMethod() Dim i As Integer = 10 Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoNoNoYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test21() Dim i As Integer [|If Integer.Parse(1) > 10 i = 1 End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test21() Dim i As Integer i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 10 i = 1 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoNoNoYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test22() Dim i As Integer = 10 [|If Integer.Parse(1) > 10 i = 1 End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test22() Dim i As Integer = 10 i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 10 i = 1 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test22_1() Dim i As Integer [|If Integer.Parse(1) > 10 i = 1 Console.WriteLine(i) End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test22_1() Dim i As Integer i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 10 i = 1 Console.WriteLine(i) End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test22_2() Dim i As Integer = 10 [|If Integer.Parse(1) > 10 i = 1 Console.WriteLine(i) End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test22_2() Dim i As Integer = 10 i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer If Integer.Parse(1) > 10 i = 1 Console.WriteLine(i) End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function MatrixCase_NoYesNoYesNoNoYesNo() As Task Dim code = <text>Imports System Class Program Sub Test23() [|Dim i As Integer|] Console.WriteLine(i) End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact> Public Async Function MatrixCase_NoYesNoYesNoNoYesYes() As Task Dim code = <text>Imports System Class Program Sub Test24() [|Dim i As Integer|] Console.WriteLine(i) i = 10 End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoYesNoYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test25() [|Dim i As Integer If Integer.Parse(1) > 9 i = 10 End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test25() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 9 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoYesNoYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test26() [|Dim i As Integer If Integer.Parse(1) > 9 i = 10 End If|] Console.WriteLine(i) i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test26() Dim i As Integer = NewMethod() Console.WriteLine(i) i = 10 End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 9 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoYesYesNoYesNo() As Task Dim code = <text>Imports System Class Program Sub Test27() [|Dim i As Integer Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test27() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Dim i As Integer Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoYesYesNoYesYes() As Task Dim code = <text>Imports System Class Program Sub Test28() [|Dim i As Integer Console.WriteLine(i)|] Console.WriteLine(i) i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test28() Dim i As Integer = NewMethod() Console.WriteLine(i) i = 10 End Sub Private Shared Function NewMethod() As Integer Dim i As Integer Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoYesYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test29() [|Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test29() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesNoYesYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test30() [|Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i)|] Console.WriteLine(i) i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test30() Dim i As Integer = NewMethod() Console.WriteLine(i) i = 10 End Sub Private Shared Function NewMethod() As Integer Dim i As Integer If Integer.Parse(1) > 0 i = 10 End If Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesNoNoYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test31() Dim i As Integer [|i = 10|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test31() Dim i As Integer i = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesNoNoYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test32() Dim i As Integer [|i = 10|] Console.WriteLine(i) i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test32() Dim i As Integer i = NewMethod() Console.WriteLine(i) i = 10 End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test32_1() Dim i As Integer [|i = 10 Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test32_1() Dim i As Integer i = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test32_2() Dim i As Integer = 10 [|i = 10 Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test32_2() Dim i As Integer = 10 i = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesYesNoYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test33() [|Dim i As Integer = 10|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test33() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesYesNoYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test34() [|Dim i As Integer = 10|] Console.WriteLine(i) i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test34() Dim i As Integer = NewMethod() Console.WriteLine(i) i = 10 End Sub Private Shared Function NewMethod() As Integer Return 10 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesYesYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test35() [|Dim i As Integer = 10 Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test35() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_NoYesYesYesYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test36() [|Dim i As Integer = 10 Console.WriteLine(i)|] Console.WriteLine(i) i = 10 End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test36() Dim i As Integer = NewMethod() Console.WriteLine(i) i = 10 End Sub Private Shared Function NewMethod() As Integer Dim i As Integer = 10 Console.WriteLine(i) Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesNoNoNo() As Task Dim code = <text>Imports System Class Program Sub Test37() Dim i As Integer [|Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test37() Dim i As Integer NewMethod(i) End Sub Private Shared Sub NewMethod(i As Integer) Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesNoNoYes() As Task Dim code = <text>Imports System Class Program Sub Test38() Dim i As Integer = 10 [|Console.WriteLine(i)|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test38() Dim i As Integer = 10 NewMethod(i) End Sub Private Shared Sub NewMethod(i As Integer) Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesNoYesNo() As Task Dim code = <text>Imports System Class Program Sub Test39() Dim i As Integer [|Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test39() Dim i As Integer NewMethod(i) Console.WriteLine(i) End Sub Private Shared Sub NewMethod(i As Integer) Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesNoYesYes() As Task Dim code = <text>Imports System Class Program Sub Test40() Dim i As Integer = 10 [|Console.WriteLine(i)|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test40() Dim i As Integer = 10 NewMethod(i) Console.WriteLine(i) End Sub Private Shared Sub NewMethod(i As Integer) Console.WriteLine(i) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test41() Dim i As Integer [|Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test41() Dim i As Integer i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test42() Dim i As Integer = 10 [|Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test42() Dim i As Integer = 10 i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test43() Dim i As Integer Console.WriteLine(i) [|Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test43() Dim i As Integer Console.WriteLine(i) i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoNoNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test44() Dim i As Integer = 10 Console.WriteLine(i) [|Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test44() Dim i As Integer = 10 Console.WriteLine(i) i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoYesNoYesYesNoNo() As Task Dim code = <text>Imports System Class Program Sub Test45() Dim i As Integer [|Console.WriteLine(i) i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test45() Dim i As Integer i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) i = 10 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoYesNoYesYesNoYes() As Task Dim code = <text>Imports System Class Program Sub Test46() Dim i As Integer = 10 [|Console.WriteLine(i) i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test46() Dim i As Integer = 10 i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) i = 10 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoYesNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test47() Dim i As Integer Console.WriteLine(i) [|Console.WriteLine(i) i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test47() Dim i As Integer Console.WriteLine(i) i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) i = 10 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesNoYesNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test48() Dim i As Integer = 10 Console.WriteLine(i) [|Console.WriteLine(i) i = 10|] End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test48() Dim i As Integer = 10 Console.WriteLine(i) i = NewMethod(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) i = 10 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesYesNoNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test49() Dim i As Integer [|Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test49() Dim i As Integer i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesYesNoNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test50() Dim i As Integer = 10 [|Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test50() Dim i As Integer = 10 i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) If Integer.Parse(1) > 0 i = 10 End If Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesYesYesNoYesYesYesNo() As Task Dim code = <text>Imports System Class Program Sub Test51() Dim i As Integer [|Console.WriteLine(i) i = 10|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test51() Dim i As Integer i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) i = 10 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestMatrixCase_YesYesYesNoYesYesYesYes() As Task Dim code = <text>Imports System Class Program Sub Test52() Dim i As Integer = 10 [|Console.WriteLine(i) i = 10|] Console.WriteLine(i) End Sub End Class</text> Dim expected = <text>Imports System Class Program Sub Test52() Dim i As Integer = 10 i = NewMethod(i) Console.WriteLine(i) End Sub Private Shared Function NewMethod(i As Integer) As Integer Console.WriteLine(i) i = 10 Return i End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540046")> Public Async Function TestImplicitFunctionLocal1() As Task Dim code = <text>Imports System Class Program Function Test() as Integer [|Return 1|] End Function End Class</text> Dim expected = <text>Imports System Class Program Function Test() as Integer Return NewMethod() End Function Private Shared Function NewMethod() As Integer Return 1 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestImplicitFunctionLocal2() As Task Dim code = <text>Imports System Class Program Function Test() as Integer Test = 1 [|If Test > 10 Then Test = 2 End If|] Console.Write(Test) Return 1 End Function End Class</text> Dim expected = <text>Imports System Class Program Function Test() as Integer Test = 1 Test = NewMethod(Test) Console.Write(Test) Return 1 End Function Private Shared Function NewMethod(Test As Integer) As Integer If Test > 10 Then Test = 2 End If Return Test End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestImplicitFunctionLocal3() As Task Dim code = <text>Imports System Class Program Function Test() as Integer Test = 1 [|If Test > 10 Then Test = 2 End If|] Return 1 End Function End Class</text> Dim expected = <text>Imports System Class Program Function Test() as Integer Test = 1 Test = NewMethod(Test) Return 1 End Function Private Shared Function NewMethod(Test As Integer) As Integer If Test > 10 Then Test = 2 End If Return Test End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact> Public Async Function TestImplicitFunctionLocal4() As Task Dim code = <text>Imports System Class Program Function Test() as Integer Test = 1 [|If Test > 10 Then Test = 2 End If|] Console.WriteLine(Test) End Function End Class</text> Dim expected = <text>Imports System Class Program Function Test() as Integer Test = 1 Test = NewMethod(Test) Console.WriteLine(Test) End Function Private Shared Function NewMethod(Test As Integer) As Integer If Test > 10 Then Test = 2 End If Return Test End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539295")> Public Async Function TestImplicitFunctionLocal5() As Task Dim code = <text>Module Module1 Sub Main() Console.WriteLine(Goo(2)) End Sub Function Goo%(ByVal j As Integer) [|Goo = 3.87 * j|] Exit Function End Function End Module</text> Dim expected = <text>Module Module1 Sub Main() Console.WriteLine(Goo(2)) End Sub Function Goo%(ByVal j As Integer) Goo = NewMethod(j) Exit Function End Function Private Function NewMethod(j As Integer) As Integer Return 3.87 * j End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/527776")> Public Async Function TestBug5079() As Task Dim code = <text>Class C Function f() As Integer [|Dim x As Integer = 5|] Return x End Function End Class</text> Dim expected = <text>Class C Function f() As Integer Dim x As Integer = NewMethod() Return x End Function Private Shared Function NewMethod() As Integer Return 5 End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539225"), Fact> Public Async Function Bug5098() As Task Dim code = <code>Class Program Shared Sub Main() [|Return|] Console.Write(4) End Sub End Class</code> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem(5092, "DevDiv_Projects/Roslyn")> Public Async Function TestBugFix5092() As Task Dim code = <text>Imports System Module Module1 Sub Main() Dim d As Integer? d = [|New Integer?()|] End Sub End Module </text> Dim expected = <text>Imports System Module Module1 Sub Main() Dim d As Integer? d = NewMethod() End Sub Private Function NewMethod() As Integer? Return New Integer?() End Function End Module </text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539224")> Public Async Function TestBugFix5096() As Task Dim code = <text>Module Program Sub Main(args As String()) [|Console.Write(4)|] 'comments End Sub End Module</text> Dim expected = <text>Module Program Sub Main(args As String()) NewMethod() 'comments End Sub Private Sub NewMethod() Console.Write(4) End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539251")> Public Async Function TestBugFix5135() As Task Dim code = <text>Module Module1 Sub Main() End Sub Public Function Goo(ByVal params&) Goo = [|params&|] End Function End Module</text> Dim expected = <text>Module Module1 Sub Main() End Sub Public Function Goo(ByVal params&) Goo = GetParams(params) End Function Private Function GetParams(params As Long) As Long Return params& End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function ''' <summary> ''' Console.Write is not bound, as there is no Imports System ''' The flow analysis API in this case should still provide information about variable x (error tolerance) ''' </summary> ''' <remarks></remarks> <Fact, WorkItem(5220, "DevDiv_Projects/Roslyn")> Public Async Function TestErrorTolerance() As Task Dim code = <text>Class A Function Test1() As Integer Dim x As Integer = 5 [|Console.Write(x)|] Return x End Function Private Shared Sub NewMethod(x As Integer) End Sub End Class</text> Dim expected = <text>Class A Function Test1() As Integer Dim x As Integer = 5 NewMethod1(x) Return x End Function Private Shared Sub NewMethod1(x As Integer) Console.Write(x) End Sub Private Shared Sub NewMethod(x As Integer) End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539298")> Public Async Function TestBug5195() As Task Dim code = <text>Imports System Class A Function Test1() As Integer [|Dim i as Integer = 10 Dim j as Integer = 0 Console.Write("hello vb!")|] j = i + 42 Console.Write(j) End Function End Class</text> Dim expected = <text>Imports System Class A Function Test1() As Integer Dim i As Integer = Nothing Dim j As Integer = Nothing NewMethod(i, j) j = i + 42 Console.Write(j) End Function Private Shared Sub NewMethod(ByRef i As Integer, ByRef j As Integer) i = 10 j = 0 Console.Write("hello vb!") End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540003")> Public Async Function TestBug6138() As Task Dim code = <text>Class Test Private _goo As Integer Property Goo As Integer Get Return _goo End Get Set(ByVal value As Integer) [|_goo = value|] End Set End Property End Class </text> Dim expected = <text>Class Test Private _goo As Integer Property Goo As Integer Get Return _goo End Get Set(ByVal value As Integer) NewMethod(value) End Set End Property Private Sub NewMethod(value As Integer) _goo = value End Sub End Class </text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540068")> Public Async Function TestBug6215() As Task Dim code = <text>Module Program Sub Main() [|Dim i As Integer = 1|] i = 2 Console.WriteLine(i) End Sub End Module</text> Dim expected = <text>Module Program Sub Main() Dim i As Integer = NewMethod() i = 2 Console.WriteLine(i) End Sub Private Function NewMethod() As Integer Return 1 End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540072")> Public Async Function TestBug6220() As Task Dim code = <text>Module Program Sub Main() [| Dim i As Integer = 1 |] Console.WriteLine(i) End Sub End Module</text> Dim expected = <text>Module Program Sub Main() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Function NewMethod() As Integer Return 1 End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540072")> Public Async Function TestBug6220_1() As Task Dim code = <text>Module Program Sub Main() [| Dim i As Integer = 1 ' test |] Console.WriteLine(i) End Sub End Module</text> Dim expected = <text>Module Program Sub Main() Dim i As Integer = NewMethod() Console.WriteLine(i) End Sub Private Function NewMethod() As Integer Return 1 ' test End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540080")> Public Async Function TestBug6230() As Task Dim code = <text>Module Program Sub Main() Dim y As Integer =[| 1 + 1|] End Sub End Module</text> Dim expected = <text>Module Program Sub Main() Dim y As Integer = GetY() End Sub Private Function GetY() As Integer Return 1 + 1 End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540080")> Public Async Function TestBug6230_1() As Task Dim code = <text>Module Program Sub Main() Dim i As Integer [|= 1 + 1|] End Sub End Module</text> Dim expected = <text>Module Program Sub Main() NewMethod() End Sub Private Sub NewMethod() Dim i As Integer = 1 + 1 End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540063")> Public Async Function TestBug6208() As Task Dim code = <text>Module Program Sub Main() [|'selection Console.Write(4) 'end selection|] End Sub End Module</text> Dim expected = <text>Module Program Sub Main() NewMethod() End Sub Private Sub NewMethod() 'selection Console.Write(4) 'end selection End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540063")> Public Async Function TestBug6208_1() As Task Dim code = <text>Module Program Sub Main() [|'selection Console.Write(4) 'end selection |] End Sub End Module</text> Dim expected = <text>Module Program Sub Main() NewMethod() End Sub Private Sub NewMethod() 'selection Console.Write(4) 'end selection End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539915")> Public Async Function TestBug6022() As Task Dim code = <text>Imports System Module Module1 Delegate Function Del(ByVal v As String) As String Sub Main(args As String()) Dim r As Del = [|AddressOf Goo|] Console.WriteLine(r.Invoke("test")) End Sub Function Goo(ByVal value As String) As String Return value End Function End Module</text> Dim expected = <text>Imports System Module Module1 Delegate Function Del(ByVal v As String) As String Sub Main(args As String()) Dim r As Del = GetR() Console.WriteLine(r.Invoke("test")) End Sub Private Function GetR() As Del Return AddressOf Goo End Function Function Goo(ByVal value As String) As String Return value End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/539915")> Public Async Function TestBug6022_1() As Task Dim code = <text>Imports System Module Module1 Delegate Function Del(ByVal v As String) As String Sub Main(args As String()) Dim r As Del = AddressOf [|Goo|] Console.WriteLine(r.Invoke("test")) End Sub Function Goo(ByVal value As String) As String Return value End Function End Module</text> Dim expected = <text>Imports System Module Module1 Delegate Function Del(ByVal v As String) As String Sub Main(args As String()) Dim r As Del = GetR() Console.WriteLine(r.Invoke("test")) End Sub Private Function GetR() As Del Return AddressOf Goo End Function Function Goo(ByVal value As String) As String Return value End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem(8285, "DevDiv_Projects/Roslyn")> Public Async Function TestBug6310() As Task Dim code = <text>Imports System Module Module1 Sub Main(args As String()) [|If True Then Return|] Console.WriteLine(1) End Sub End Module</text> Dim expected = <text>Imports System Module Module1 Sub Main(args As String()) NewMethod() Return Console.WriteLine(1) End Sub Private Sub NewMethod() If True Then Return End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem(8285, "DevDiv_Projects/Roslyn")> Public Async Function TestBug6310_1() As Task Dim code = <text>Imports System Module Module1 Sub Main(args As String()) If True Then [|If True Then Return|] Console.WriteLine(1) End Sub End Module</text> Dim expected = <text>Imports System Module Module1 Sub Main(args As String()) If True Then NewMethod() : Return Console.WriteLine(1) End Sub Private Sub NewMethod() If True Then Return End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540151")> Public Async Function TestBug6310_2() As Task Dim code = <text>Imports System Module Module1 Sub Main(args As String()) [|If True Then Return|] End Sub End Module</text> Dim expected = <text>Imports System Module Module1 Sub Main(args As String()) NewMethod() End Sub Private Sub NewMethod() If True Then Return End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem(8285, "DevDiv_Projects/Roslyn")> Public Async Function TestBug6310_3() As Task Dim code = <text>Imports System Module Module1 Sub Main(args As String()) If True Then [|If True Then Return|] End Sub End Module</text> Dim expected = <text>Imports System Module Module1 Sub Main(args As String()) If True Then NewMethod() : Return End Sub Private Sub NewMethod() If True Then Return End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540338")> Public Async Function TestBug6566() As Task Dim code = <text>Imports System Module Module1 Sub Main(args As String()) Dim s as String = [|Nothing|] End Sub End Module</text> Dim expected = <text>Imports System Module Module1 Sub Main(args As String()) Dim s as String = GetS() End Sub Private Function GetS() As String Return Nothing End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/540361")> Public Async Function TestBugFix6598() As Task Dim code = <text>Imports System Class C Sub Test() [|Program|] End Sub End Class</text> Dim expected = <text>Imports System Class C Sub Test() NewMethod() End Sub Private Shared Sub NewMethod() Program End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541671")> Public Async Function TestUnreachableCodeWithReturnStatement() As Task Dim code = <text>Class Test Sub Test() Return [|Dim i As Integer = 1 Dim j As Integer = i|] Return End Sub End Class</text> Dim expected = <text>Class Test Sub Test() Return NewMethod() Return End Sub Private Shared Sub NewMethod() Dim i As Integer = 1 Dim j As Integer = i End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541671")> Public Async Function TestUnreachableCodeWithExitSub() As Task Dim code = <text>Class Test Sub Test() Return [|Dim i As Integer = 1 Dim j As Integer = i|] Exit Sub End Sub End Class</text> Dim expected = <text>Class Test Sub Test() Return NewMethod() Exit Sub End Sub Private Shared Sub NewMethod() Dim i As Integer = 1 Dim j As Integer = i End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541671")> Public Async Function TestEmbededStatementWithoutStatementEndToken() As Task Dim code = <text>Module Program Sub Main(args As String()) If True Then Dim i As Integer = 10 : [|i|] = i + 10 Else Dim j As Integer = 45 : j = j + 10 End Sub End Module</text> Dim expected = <text>Module Program Sub Main(args As String()) If True Then Dim i As Integer = 10 : i = NewMethod(i) Else Dim j As Integer = 45 : j = j + 10 End Sub Private Function NewMethod(i As Integer) As Integer i = i + 10 Return i End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem(8075, "DevDiv_Projects/Roslyn")> Public Async Function TestFieldInitializer() As Task Dim code = <text>Module Program Dim x As Object = [|Nothing|] Sub Main(args As String()) End Sub End Module</text> Dim expected = <text>Module Program Dim x As Object = GetX() Private Function GetX() As Object Return Nothing End Function Sub Main(args As String()) End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541409"), WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542687")> Public Async Function DoNotCrashOnInvalidAddressOf() As Task Dim code = <text>Module Program Sub Main(args As String()) End Sub Sub UseThread() Dim t As New System.Threading.Thread(AddressOf [|goo|]) End Sub End Module</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/541515")> Public Async Function TestDoNotCrashWhenCanFindOutContainingScopeType() As Task Dim code = <text>Class Program Sub Main() Dim x As New List(Of Program) From {[|New Program|]} End Sub Public Property Name As String End Class</text> Dim expected = <text>Class Program Sub Main() Dim x As New List(Of Program) From {NewMethod()} End Sub Private Shared Function NewMethod() As Program Return New Program End Function Public Property Name As String End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542512")> Public Async Function TestQueryVariable1() As Task Dim code = <text>Option Infer On Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim x = From [|y|] In "" End Sub End Module</text> Dim expected = <text>Option Infer On Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim x = GetX() End Sub Private Function GetX() As Collections.Generic.IEnumerable(Of Char) Return From y In "" End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542615")> Public Async Function TestFixedNullExceptionCrash() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim x As Integer = 5 If x > 0 Then Else [|Console.Write|] End If End Sub End Module</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim x As Integer = 5 If x > 0 Then Else NewMethod() End If End Sub Private Sub NewMethod() Console.Write End Sub End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542629")> Public Async Function TestLambdaSymbol() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Apply(a() As Integer, funct As Func(Of Integer, Integer)) For index As Integer = 0 To a.Length - 1 a(index) = funct(a(index)) Next index End Sub Sub Main() Dim a(3) As Integer Dim i As Integer For i = 0 To 3 a(i) = i + 1 Next Apply(a, Function(x As Integer) [|Return x * 2|] End Function) End Sub End Module</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Apply(a() As Integer, funct As Func(Of Integer, Integer)) For index As Integer = 0 To a.Length - 1 a(index) = funct(a(index)) Next index End Sub Sub Main() Dim a(3) As Integer Dim i As Integer For i = 0 To 3 a(i) = i + 1 Next Apply(a, Function(x As Integer) Return NewMethod(x) End Function) End Sub Private Function NewMethod(x As Integer) As Integer Return x * 2 End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542511")> Public Async Function ExtractMethodOnVariableUsedInWhen() As Task Dim code = <text>Imports System Module Program Sub Main(args As String()) [|Dim s As color|] Try Catch ex As Exception When s = color.blue Console.Write("Exception") End Try End Sub End Module Enum color blue End Enum</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542512")> Public Async Function TestExtractMethodOnVariableDeclaredInFrom() As Task Dim code = <text>Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim x = From [|y|] In "" End Sub End Module</text> Dim expected = <text>Imports System Imports System.Linq Module Program Sub Main(args As String()) Dim x = GetX() End Sub Private Function GetX() As Collections.Generic.IEnumerable(Of Char) Return From y In "" End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542825")> Public Async Function DanglingField() As Task Dim code = <text>Dim query1 = From i As Integer In New Integer() {4, 5} Where [|i > 5|] Select i</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact> Public Async Function TestMultipleNamesLocalDecl() As Task Dim code = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) [|Dim i, i2, i3 As Object = New Object() Dim i4|] lab1: Console.Write(i) GoTo lab1 Console.Write(i2) Console.Write(i3) End Sub End Module</text> Dim expected = <text>Imports System Imports System.Collections.Generic Imports System.Linq Module Program Sub Main(args As String()) Dim i, i2 As Object Dim i3 As Object = NewMethod() lab1: Console.Write(i) GoTo lab1 Console.Write(i2) Console.Write(i3) End Sub Private Function NewMethod() As Object Dim i3 As Object = New Object() Dim i4 Return i3 End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543244")> Public Async Function TestUnreachableUninitialized() As Task Dim code = <text>Option Infer On Imports System Class Program Shared Sub Main() [|Dim x1 As Object SyncLock x1 Return End SyncLock|] System.Threading.Monitor.Exit(x1) End Sub End Class</text> Dim expected = <text>Option Infer On Imports System Class Program Shared Sub Main() Dim x1 As Object = Nothing NewMethod(x1) Return System.Threading.Monitor.Exit(x1) End Sub Private Shared Sub NewMethod(ByRef x1 As Object) SyncLock x1 Return End SyncLock End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543053")> Public Async Function TestAddBlankLineBetweenMethodAndType() As Task Dim code = <text>Class Program Private Shared Sub Main(args As String()) Dim i As Integer = 2 Dim c As New C(Of Integer)([|i|]) End Sub Private Class C(Of T) Private v As Integer Public Sub New(ByRef v As Integer) Me.v = v End Sub End Class End Class</text> Dim expected = <text>Class Program Private Shared Sub Main(args As String()) Dim i As Integer = 2 NewMethod(i) End Sub Private Shared Sub NewMethod(i As Integer) Dim c As New C(Of Integer)(i) End Sub Private Class C(Of T) Private v As Integer Public Sub New(ByRef v As Integer) Me.v = v End Sub End Class End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543047")> Public Async Function TestResourceDeclaredOutside() As Task Dim code = <text>Option Infer On Option Strict Off Class C1 Shared Sub main() [|Dim mnObj As MyManagedClass Using mnObj End Using|] End Sub End Class Structure MyManagedClass Implements IDisposable Sub Dispose() Implements System.IDisposable.Dispose Console.Write("Dispose") End Sub End Structure</text> Dim expected = <text>Option Infer On Option Strict Off Class C1 Shared Sub main() NewMethod() End Sub Private Shared Sub NewMethod() Dim mnObj As MyManagedClass Using mnObj End Using End Sub End Class Structure MyManagedClass Implements IDisposable Sub Dispose() Implements System.IDisposable.Dispose Console.Write("Dispose") End Sub End Structure</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/528962")> Public Async Function TestFunctionCallWithFunctionName() As Task Dim code = <text>Option Infer On Imports System Class Program Shared Sub Main(args As String()) factorial(4) End Sub Shared Function factorial(ByVal x As Integer) As Integer [| factorial = x * factorial(x - 1) * x|] End Function End Class </text> Dim expected = <text>Option Infer On Imports System Class Program Shared Sub Main(args As String()) factorial(4) End Sub Shared Function factorial(ByVal x As Integer) As Integer factorial = NewMethod(x) End Function Private Shared Function NewMethod(x As Integer) As Integer Return x * factorial(x - 1) * x End Function End Class </text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543244")> Public Async Function ExtractMethodForBadCode() As Task Dim code = <text>Module M1 WriteOnly Property Age() As Integer Set(ByVal Value As Integer) Dim a, b, c As [|Object =|] New Object() lab1: SyncLock a GoTo lab1 End SyncLock Console.WriteLine(b) Console.WriteLine(c) End Set End Property End Module </text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem(10878, "DevDiv_Projects/Roslyn")> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544408")> Public Async Function ExtractMethodForBranchOutFromSyncLock() As Task Dim code = <text>Imports System Class Program Shared Sub Main(args As String()) SyncLock Sub() [|Exit While|] End Function End SyncLock End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543304")> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/544408")> Public Async Function ExtractMethodForLambdaInSyncLock() As Task Dim code = <text>Imports System Class Program Public Shared Sub Main(args As String()) SyncLock Function(ByRef int As [|Integer|]) SyncLock x End SyncLock End Function End SyncLock End Sub End Class</text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543320")> Public Async Function TestExtractMethodForBadRegion() As Task Dim code = <text>Imports System Class Test Public Shared Sub Main() Dim x(1, 2) As Integer = New Integer[|(,)|] {{1}, {2}} End Sub End Class </text> Dim expected = <text>Imports System Class Test Public Shared Sub Main() Dim x(1, 2) As Integer = GetX() End Sub Private Shared Function GetX() As Integer(,) Return New Integer(,) {{1}, {2}} End Function End Class </text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543320")> Public Async Function TestExtractMethodForBadRegion_1() As Task Dim code = <text>Imports System Class Test Public Shared Sub Main() Dim y(1, 2) = [|New Integer|] End Sub End Class </text> Dim expected = <text>Imports System Class Test Public Shared Sub Main() Dim y(1, 2) = GetY() End Sub Private Shared Function GetY() As Integer Return New Integer End Function End Class </text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543362")> Public Async Function ExtractMethodForBadRegion_2() As Task Dim code = <text>Imports System Class Test Public Shared Sub Main() Dim y(,) = New Integer(,) {{[|From|]}} End Function End Class </text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543244")> Public Async Function TestExtractMethodForSynclockBlockContainsReturn() As Task Dim code = <text>Option Infer On Imports System Class Program Shared Sub Main() [|Dim x1 As Object SyncLock x1 Return End SyncLock|] System.Threading.Monitor.Exit(x1) End Sub End Class </text> Dim expected = <text>Option Infer On Imports System Class Program Shared Sub Main() Dim x1 As Object = Nothing NewMethod(x1) Return System.Threading.Monitor.Exit(x1) End Sub Private Shared Sub NewMethod(ByRef x1 As Object) SyncLock x1 Return End SyncLock End Sub End Class </text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543244")> Public Async Function TestExtractMethodForUsingBlockContainsReturn() As Task Dim code = <text>Imports System Option Infer On Imports System Class Program Shared Sub Main() [|Dim x1 As C1 Using x1 Return End Using|] System.Threading.Monitor.Exit(x1) End Sub End Class Class C1 Implements IDisposable Public Sub Dispose Implements IDisposable.Dispose End Sub End Class</text> Dim expected = <text>Imports System Option Infer On Imports System Class Program Shared Sub Main() Dim x1 As C1 = Nothing NewMethod(x1) Return System.Threading.Monitor.Exit(x1) End Sub Private Shared Sub NewMethod(ByRef x1 As C1) Using x1 Return End Using End Sub End Class Class C1 Implements IDisposable Public Sub Dispose Implements IDisposable.Dispose End Sub End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543244")> Public Async Function TestExtractMethodExitInLambda() As Task Dim code = <text>Imports System Option Infer On Option Strict On Imports System Class Program Shared Sub Main() Dim myLock As Object [|SyncLock Sub() myLock = New Object() Exit Sub End Sub End SyncLock|] End Sub End Class</text> Dim expected = <text>Imports System Option Infer On Option Strict On Imports System Class Program Shared Sub Main() Dim myLock As Object myLock = NewMethod(myLock) End Sub Private Shared Function NewMethod(myLock As Object) As Object SyncLock Sub() myLock = New Object() Exit Sub End Sub End SyncLock Return myLock End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543332")> Public Async Function TestExtractMethodExitInLambda_2() As Task Dim code = <text>Imports System Option Infer On Option Strict On Imports System Class Program Shared Sub Main() Dim myLock As Object [|SyncLock Function() myLock = New Object() Exit Function Return Nothing End Function End SyncLock|] End Sub End Class</text> Dim expected = <text>Imports System Option Infer On Option Strict On Imports System Class Program Shared Sub Main() Dim myLock As Object myLock = NewMethod(myLock) End Sub Private Shared Function NewMethod(myLock As Object) As Object SyncLock Function() myLock = New Object() Exit Function Return Nothing End Function End SyncLock Return myLock End Function End Class</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543334")> <WorkItem(11186, "DevDiv_Projects/Roslyn")> Public Async Function ExtractMethodExitInLambda_3() As Task Dim code = <text>Imports System Public Class Program Shared Sub goo() Dim syncroot As Object = New Object SyncLock syncroot SyncLock Sub x [|Exit Sub|] End Function End SyncLock End SyncLock End Sub End Class </text> Await ExpectExtractMethodToFailAsync(code) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/543096")> Public Async Function TestSelectCaseExpr() As Task Dim code = <text> Module Program Sub Main(args As String()) Select Case [|5|] Case 5 Console.Write(5) End Select End Sub End Module</text> Dim expected = <text> Module Program Sub Main(args As String()) Select Case NewMethod() Case 5 Console.Write(5) End Select End Sub Private Function NewMethod() As Integer Return 5 End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542800")> Public Async Function TestOutmostXmlElement() As Task Dim code = <text>Imports System Imports System.Xml.Linq Module Program Sub Main(args As String()) Dim x = [|<x></x>|] End Sub End Module</text> Dim expected = <text>Imports System Imports System.Xml.Linq Module Program Sub Main(args As String()) Dim x = GetX() End Sub Private Function GetX() As XElement Return <x></x> End Function End Module</text> Await TestExtractMethodAsync(code, expected, metadataReference:=GetType(System.Xml.Linq.XElement).Assembly.Location) End Function <Fact, WorkItem(13658, "DevDiv_Projects/Roslyn")> Public Async Function TestExtractMethodForElementInitializers() As Task Dim code = <text> Module Module1 Property Prop As New List(Of String) From {[|"One"|], "two"} End Module</text> Dim expected = <text> Module Module1 Property Prop As New List(Of String) From {NewMethod(), "two"} Private Function NewMethod() As String Return "One" End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function <Fact, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529967")> Public Async Function TestExtractObjectArray() As Task Dim code = <text>Imports System Module Program Sub Main(args As String()) Dim o3 As Object = "hi" Dim col1 = [|{o3, o3}|] End Sub End Module</text> Dim expected = <text>Imports System Module Program Sub Main(args As String()) Dim o3 As Object = "hi" Dim col1 = GetCol1(o3) End Sub Private Function GetCol1(o3 As Object) As Object() Return {o3, o3} End Function End Module</text> Await TestExtractMethodAsync(code, expected) End Function End Class End Class End Namespace