diff --git a/src/EditorFeatures/Test2/EditorServicesTest2.vbproj b/src/EditorFeatures/Test2/EditorServicesTest2.vbproj index e00b081389c657307e94e4d95b0c1a402a42fd81..89579920efa15f92b8a6ee62791b33a088f5e7fa 100644 --- a/src/EditorFeatures/Test2/EditorServicesTest2.vbproj +++ b/src/EditorFeatures/Test2/EditorServicesTest2.vbproj @@ -194,6 +194,7 @@ + diff --git a/src/EditorFeatures/Test2/FindReferences/FindReferencesTests.Tuples.vb b/src/EditorFeatures/Test2/FindReferences/FindReferencesTests.Tuples.vb new file mode 100644 index 0000000000000000000000000000000000000000..5bef568fb55e20ba82819d5419fc85b0d1e9d360 --- /dev/null +++ b/src/EditorFeatures/Test2/FindReferences/FindReferencesTests.Tuples.vb @@ -0,0 +1,234 @@ +' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +Imports System.Threading.Tasks + +Namespace Microsoft.CodeAnalysis.Editor.UnitTests.FindReferences + Partial Public Class FindReferencesTests + Dim tuple2Doc As XElement = + +namespace System +{ + // struct with two values + public struct ValueTuple<T1, T2> + { + public T1 Item1; + public T2 Item2; + + public ValueTuple(T1 item1, T2 item2) + { + this.Item1 = item1; + this.Item2 = item2; + } + + public override string ToString() + { + return '{' + Item1?.ToString() + "", "" + Item2?.ToString() + '}'; + } + } +} + + + + Public Async Function TestTupleFieldSameTuples01() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + Await TestAPIAndFeature(input) + End Function + + + Public Async Function TestTupleFieldSameTuples02() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + Await TestAPIAndFeature(input) + End Function + + + Public Async Function TestTupleFieldSameTuples03() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + Await TestAPIAndFeature(input) + End Function + + + Public Async Function TestTupleFieldSameTuplesMultidocument() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + + + Await TestAPIAndFeature(input) + End Function + + + Public Async Function TestTupleFieldDifferentTuples01() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + Await TestAPIAndFeature(input) + End Function + + + Public Async Function TestTupleFieldSameTuplesMatchOuterSymbols01() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + Await TestAPIAndFeature(input) + End Function + + + Public Async Function TestTupleFieldSameTuplesMatchOuterSymbols02() As Task + Dim input = + + + <%= tuple2Doc %> + + + + + Await TestAPIAndFeature(input) + End Function + + End Class +End Namespace diff --git a/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionTests.vb b/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionTests.vb index ad3fee9687b0bd8642c43405a83991924732fb1f..d494328a84662c2f6535e595027849da1086dd4a 100644 --- a/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionTests.vb +++ b/src/EditorFeatures/Test2/GoToDefinition/GoToDefinitionTests.vb @@ -765,6 +765,245 @@ class C Await TestAsync(workspace) End Function +#End Region + +#Region "CSharp TupleTests" + Dim tuple2Doc As XElement = + +namespace System +{ + // struct with two values + public struct ValueTuple<T1, T2> + { + public T1 Item1; + public T2 Item2; + + public ValueTuple(T1 item1, T2 item2) + { + this.Item1 = item1; + this.Item2 = item2; + } + + public override string ToString() + { + return '{' + Item1?.ToString() + "", "" + Item2?.ToString() + '}'; + } + } +} + + + + Public Async Function TestCSharpGotoDefinitionTupleFieldEqualTuples01() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + var x = ([|Alice|]: 1, Bob: 2); + + var y = (Alice: 1, Bob: 2); + + var z1 = x.$$Alice; + var z2 = y.Alice; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldEqualTuples02() As Task + Dim workspace = + + + + + class Program + { + static void Main(string[] args) + { + var x = (Alice: 1, Bob: 2); + + var y = ([|Alice|]: 1, Bob: 2); + + var z1 = x.Alice; + var z2 = y.$$Alice; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldMatchToOuter01() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + var x = ([|Program|]: 1, Main: 2); + + var z = x.$$Program; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldMatchToOuter02() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + var x = ([|Pro$$gram|]: 1, Main: 2); + + var z = x.Program; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldMatchToOuter03() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + var x = (1,2,3,4,5,6,7,8,9,10, [|Program|]: 1, Main: 2); + + var z = x.$$Program; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldRedeclared01() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + (int [|Alice|], int Bob) x = (Alice: 1, Bob: 2); + + var z1 = x.$$Alice; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldRedeclared02() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + (string Alice, int Bob) x = ([|Al$$ice|]: null, Bob: 2); + + var z1 = x.Alice; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldItem01() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + var x = ([|1|], Bob: 2); + + var z1 = x.$$Item1; + } + } + + + + + Await TestAsync(workspace) + End Function + + + Public Async Function TestCSharpGotoDefinitionTupleFieldItem02() As Task + Dim workspace = + + + <%= tuple2Doc %> + + class Program + { + static void Main(string[] args) + { + var x = ([|Alice|]: 1, Bob: 2); + + var z1 = x.$$Item1; + } + } + + + + + Await TestAsync(workspace) + End Function #End Region