' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports Microsoft.CodeAnalysis.Remote.Testing Namespace Microsoft.CodeAnalysis.Editor.UnitTests.ReferenceHighlighting Public Class CSharpReferenceHighlightingTests Inherits AbstractReferenceHighlightingTests Public Async Function TestVerifyNoHighlightsWhenOptionDisabled(testHost As TestHost) As Task Await VerifyHighlightsAsync( class $$Goo { Goo f; } , testHost, optionIsEnabled:=False) End Function Public Async Function TestVerifyHighlightsForClass(testHost As TestHost) As Task Await VerifyHighlightsAsync( class {|Definition:$$Goo|} { } , testHost) End Function Public Async Function TestVerifyHighlightsForScriptReference(testHost As TestHost) As Task Await VerifyHighlightsAsync( void M() { } {|Reference:$$Script|}.M(); , testHost) End Function Public Async Function TestVerifyHighlightsForCSharpClassWithConstructor(testHost As TestHost) As Task Await VerifyHighlightsAsync( class {|Definition:$$Goo|} { {|Definition:Goo|}() { {|Reference:var|} x = new {|Reference:Goo|}(); } } , testHost) End Function Public Async Function TestVerifyHighlightsForCSharpClassWithSynthesizedConstructor(testHost As TestHost) As Task Await VerifyHighlightsAsync( class {|Definition:Goo|} { void Blah() { var x = new {|Reference:$$Goo|}(); } } , testHost) End Function Public Async Function TestVerifyHighlightsOnCloseAngleOfGeneric(testHost As TestHost) As Task Await VerifyHighlightsAsync( (); } }]]> , testHost) End Function Public Async Function TestVerifyNoHighlightsOnAsyncLambda(testHost As TestHost) As Task Await VerifyHighlightsAsync( { return await Task.Yield(); }; }]]> , testHost) End Function Public Async Function TestAlias1(testHost As TestHost) As Task Dim input = namespace X { using {|Definition:Q|} = System.IO; Class B { public void M() { $${|Reference:Q|}.Directory.Exists(""); } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestAlias2(testHost As TestHost) As Task Dim input = namespace X { using $${|Definition:Q|} = System.IO; Class B { public void M() { {|Reference:Q|}.Directory.Exists(""); } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestAlias3(testHost As TestHost) As Task Dim input = namespace X { using Q = System.$${|Reference:IO|}; Class B { public void M() { {|Reference:Q|}.Directory.Exists(""); } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestAlias4(testHost As TestHost) As Task Dim input = ; // select C class A { } class B : {|Reference:C|} { } }]]> Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightThroughVar1(testHost As TestHost) As Task Dim input = class C { void F() { $${|Reference:var|} i = 1; {|Reference:int|} j = 0; double d; {|Reference:int|} k = 1; } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightThroughVar2(testHost As TestHost) As Task Dim input = class C { void F() { {|Reference:var|} i = 1; $${|Reference:int|} j = 0; double d; {|Reference:int|} k = 1; } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightThroughVar3(testHost As TestHost) As Task Dim input = (); int j = 0; double d; {|Reference:var|} k = new {|Reference:List|}(); } } ]]> Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestUsingAliasAndTypeWithSameName1(testHost As TestHost) As Task Dim input = using {|Definition:$$X|} = System; class X { } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestUsingAliasAndTypeWithSameName2(testHost As TestHost) As Task Dim input = using X = System; class {|Definition:$$X|} { } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestAccessor1(testHost As TestHost) As Task Dim input = class C { string P { $$get { return P; } set { P = ""; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestAccessor2(testHost As TestHost) As Task Dim input = class C { string P { get { return P; } $$set { P = ""; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestThisShouldNotHighlightTypeName(testHost As TestHost) As Task Dim input = class C { void M() { t$$his.M(); } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightDynamicallyBoundMethod(testHost As TestHost) As Task Dim input = class A { class B { public void {|Definition:Boo|}(int d) { } //Line 1 public void Boo(dynamic d) { } //Line 2 public void Boo(string d) { } //Line 3 } void Aoo() { B b = new B(); dynamic d = 1.5f; b.{|Reference:Boo|}(1); //Line 4 b.$${|Reference:Boo|}(d); //Line 5 b.Boo("d"); //Line 6 } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightParameterizedPropertyParameter(testHost As TestHost) As Task Dim input = class C { int this[int $${|Definition:i|}] { get { return this[{|Reference:i|}]; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestInterpolatedString1(testHost As TestHost) As Task Dim input = class C { void M() { var $${|Definition:a|} = "Hello"; var b = "World"; var c = $"{ {|Reference:a|} }, {b}!"; } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestInterpolatedString2(testHost As TestHost) As Task Dim input = class C { void M() { var a = "Hello"; var $${|Definition:b|} = "World"; var c = $"{a}, { {|Reference:b|} }!"; } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestWrittenReference(testHost As TestHost) As Task Dim input = class C { void M() { var $${|Definition:b|} = "Hello"; {|WrittenReference:b|} = "World"; } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestWrittenReference2(testHost As TestHost) As Task Dim input = class C { void M() { int {|Definition:$$y|}; int x = {|WrittenReference:y|} = 7; } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestPatternMatchingType1(testHost As TestHost) As Task Dim input = class C { void M() { object o = null; if (o is C $${|Definition:c|}) { var d = {|Reference:c|}; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestPatternMatchingType2(testHost As TestHost) As Task Dim input = class C { void M() { object o = null; if (o is C {|Definition:c|}) { var d = $${|Reference:c|}; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestPatternMatchingTypeScoping1(testHost As TestHost) As Task Dim input = class Class1 { } class Class2 { } class C { void M() { object o = null; if (o is Class1 {|Definition:c|}) { var d = $${|Reference:c|}; } else if (o is Class2 c) { var d = c; } el } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestPatternMatchingTypeScoping2(testHost As TestHost) As Task Dim input = class Class1 { } class Class2 { } class C { void M() { object o = null; if (o is Class1 c) { var d = c; } else if (o is Class2 {|Definition:c|}) { var d = $${|Reference:c|}; } el } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestRegexReference1(testHost As TestHost) As Task Dim input = using System.Text.RegularExpressions; class C { void Goo() { var r = new Regex(@"{|Reference:(a)|}\0{|Reference:\$$1|}"); } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightParamAndCommentsCursorOnDefinition(testHost As TestHost) As Task Dim input = class C { /// < summary > /// < paramref name="{|Reference:x|}"/ > /// < /summary > /// < param name="{|Reference:x|}" > < /param > public int this[int $${|Definition:x|}] { get { return 0; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightParamAndCommentsCursorOnReference(testHost As TestHost) As Task Dim input = class C { /// < summary > /// < paramref name="$${|Reference:x|}"/ > /// < /summary > /// < param name="{|Reference:x|}" > < /param > public int this[int {|Definition:x|}] { get { return 0; } } } Await VerifyHighlightsAsync(input, testHost) End Function Public Async Function TestHighlightParamAndCommentsDefinitionNestedBetweenReferences(testHost As TestHost) As Task Dim input = class C { /// < summary > /// < paramref name="$${|Reference:x|}"/ > /// < /summary > /// < param name="{|Reference:x|}" > < /param > public int this[int {|Definition:x|}] { get { return {|Reference:x|}; } } } Await VerifyHighlightsAsync(input, testHost) End Function End Class End Namespace