/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/EditorFeatures/Test2/Rename/VisualBasic/EscapingTests.vb
628 строк
24 KB
Cyrus Najmabadi
Organize VB imports
27 июн 2025, 21:53
27 июн 2025, 21:53
e9c47fd
Код
Авторство
О чём код?
' Licensed to the .NET Foundation under one or more agreements. ' The .NET Foundation licenses this file to you under the MIT license. ' See the LICENSE file in the project root for more information. Imports Microsoft.CodeAnalysis.Rename.ConflictEngine Namespace Microsoft.CodeAnalysis.Editor.UnitTests.Rename.VisualBasic <[UseExportProvider]> <Trait(Traits.Feature, Traits.Features.Rename)> Public Class EscapingTests Private ReadOnly _outputHelper As Abstractions.ITestOutputHelper Public Sub New(outputHelper As Abstractions.ITestOutputHelper) _outputHelper = outputHelper End Sub <Theory> <CombinatorialData> Public Sub EscapeTypeWhenRenamingToKeyword(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module {|Escape:$$Goo|} Sub Blah() {|stmt1:Goo|}.Blah() End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="If") result.AssertLabeledSpecialSpansAre("Escape", "[If]", RelatedLocationType.NoConflict) result.AssertLabeledSpecialSpansAre("stmt1", "[If]", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub DoNotEscapeMethodAfterDotWhenRenamingToKeyword(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module Goo Sub {|Escape:$$Blah|}() Goo.{|stmt1:Blah|}() End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="If") result.AssertLabeledSpecialSpansAre("Escape", "[If]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("stmt1", "If", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub EscapeAttributeWhenRenamingToRegularKeyword(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document><![CDATA[ Imports System Class {|Escape:$$C|} Inherits Attribute End Class <{|Escape:C|}> Module Program Sub Main() End Sub End Module ]]></Document> </Project> </Workspace>, host:=host, renameTo:="If") result.AssertLabeledSpecialSpansAre("Escape", "[If]", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub EscapeAttributeUsageWhenRenamingToAssembly(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document><![CDATA[ Imports System Class [|$$C|] Inherits Attribute End Class <{|Escape:C|}> Module Program Sub Main() End Sub End Module ]]></Document> </Project> </Workspace>, host:=host, renameTo:="Assembly") result.AssertLabeledSpecialSpansAre("Escape", "[Assembly]", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub EscapeAttributeUsageWhenRenamingToModule(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document><![CDATA[ Imports System Class {|Escape:$$C|} Inherits Attribute End Class <{|Escape:C|}> Module Program Sub Main() End Sub End Module ]]></Document> </Project> </Workspace>, host:=host, renameTo:="Module") result.AssertLabeledSpecialSpansAre("Escape", "[Module]", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub EscapeWhenRenamingMethodToNew(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Class Derived Inherits Base Sub New() MyBase.{|stmt1:Blah|}() End Sub End Class Class Base Sub {|Escape:$$Blah|}() End Sub End Class </Document> </Project> </Workspace>, host:=host, renameTo:="New") result.AssertLabeledSpecialSpansAre("Escape", "[New]", RelatedLocationType.NoConflict) result.AssertLabeledSpecialSpansAre("stmt1", "[New]", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub EscapeWhenRenamingMethodToRem(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module Goo Sub {|Escape:$$Blah|}() Goo.{|stmt1:Blah|}() End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="Rem") result.AssertLabeledSpecialSpansAre("Escape", "[Rem]", RelatedLocationType.NoConflict) result.AssertLabeledSpecialSpansAre("stmt1", "[Rem]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542104")> <CombinatorialData> Public Sub EscapeWhenRenamingPropertyToMid(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main {|stmt1:Goo|}(1) = 1 End Sub WriteOnly Property [|$$Goo|](ParamArray x As Integer()) As Integer Set(ByVal value As Integer) End Set End Property End Module </Document> </Project> </Workspace>, host:=host, renameTo:="Mid") result.AssertLabeledSpecialSpansAre("stmt1", "[Mid]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542104")> <CombinatorialData> Public Sub EscapeWhenRenamingPropertyToStrangelyCasedMid(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main {|stmt1:Goo|}(1) = 1 End Sub WriteOnly Property [|$$Goo|](ParamArray x As Integer()) As Integer Set(ByVal value As Integer) End Set End Property End Module </Document> </Project> </Workspace>, host:=host, renameTo:="mId") result.AssertLabeledSpecialSpansAre("stmt1", "[mId]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542166")> <CombinatorialData> Public Sub EscapeWhenRenamingToMidWithTypeCharacters1(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main {|escaped:Goo|}(1) = "" End Sub WriteOnly Property {|stmt:$$Goo$|}(x%) Set(ByVal value$) End Set End Property End Module </Document> </Project> </Workspace>, host:=host, renameTo:="Mid") result.AssertLabeledSpansAre("escaped", "[Mid]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("stmt", "Mid$", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542166")> <CombinatorialData> Public Sub EscapeWhenRenamingToMidWithTypeCharacters2(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main {|unresolved:Goo|}(1) = "" End Sub WriteOnly Property {|unresolved2:$$Goo$|}(x%) Set(ByVal value$) End Set End Property End Module </Document> </Project> </Workspace>, host:=host, renameTo:="Mid$") result.AssertLabeledSpansAre("unresolved", "Mid$", RelatedLocationType.UnresolvedConflict) result.AssertLabeledSpansAre("unresolved2", "Mid$$", RelatedLocationType.UnresolvedConflict) End Using End Sub <Theory> <CombinatorialData> Public Sub EscapePreserveKeywordWhenRenamingWithRedim(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main() Dim {|stmt1:$$x|} ReDim {|stmt2:x|}(1) End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="preserve") result.AssertLabeledSpansAre("stmt1", "preserve", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("stmt2", "[preserve]", RelatedLocationType.NoConflict) End Using End Sub <Theory> <CombinatorialData> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542322")> Public Sub EscapeRemKeywordWhenDoingTypeNameQualification(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main Dim [Rem] {|Resolve:Goo|} End Sub Sub {|Escape:Goo$$|} End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="Rem") result.AssertLabeledSpecialSpansAre("Escape", "[Rem]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("Resolve", "M.[Rem]", RelatedLocationType.ResolvedReferenceConflict) End Using End Sub <Theory> <CombinatorialData> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542322")> Public Sub EscapeNewKeywordWhenDoingTypeNameQualification(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module M Sub Main Dim [New] {|Resolve:Goo|} End Sub Sub {|Escape:Goo$$|} End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="New") result.AssertLabeledSpecialSpansAre("Escape", "[New]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("Resolve", "M.[New]", RelatedLocationType.ResolvedReferenceConflict) End Using End Sub <Theory> <CombinatorialData> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542322")> Public Sub EscapeRemKeywordWhenDoingMeQualification(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Class M Sub Main() Dim [Rem] {|Replacement:Goo|}() End Sub Sub {|Escaped:$$Goo|}() End Sub End Class </Document> </Project> </Workspace>, host:=host, renameTo:="Rem") result.AssertLabeledSpecialSpansAre("Escaped", "[Rem]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("Replacement", "Me.[Rem]()", RelatedLocationType.ResolvedReferenceConflict) End Using End Sub <Theory> <CombinatorialData> <WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/542322")> Public Sub DoNotEscapeIfKeywordWhenDoingMeQualification(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Class M Sub Main Dim [If] {|Resolve:Goo|} End Sub Sub {|Escape:Goo$$|} End Sub End Class </Document> </Project> </Workspace>, host:=host, renameTo:="If") result.AssertLabeledSpecialSpansAre("Escape", "[If]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("Resolve", "Me.If", RelatedLocationType.ResolvedReferenceConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529935")> <CombinatorialData> Public Sub EscapeIdentifierWhenRenamingToRemKeyword(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module Program Sub Main() Dim {|stmt:$$x|} As String ' Rename x to [REM] Dim y = {|stmt:x|} End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="REM") result.AssertLabeledSpansAre("stmt", "[REM]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529935")> <CombinatorialData> Public Sub EscapeIdentifierWhenRenamingToRemKeyword2(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module Program Sub Main() Dim {|stmt:$$x|} As String ' Rename x to [REM] Dim y = {|conflict:x$|} End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="REM") result.AssertLabeledSpansAre("stmt", "[REM]", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("conflict", "REM$", RelatedLocationType.UnresolvedConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529938")> <CombinatorialData> Public Sub RenamingToEscapedIdentifierWithFullwidthSquareBracket(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document> Module Program Sub Main() Dim {|First:$$x|} As String ' Rename x to [String] End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="[String]") result.AssertLabeledSpansAre("First", "[String]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/529932")> <CombinatorialData> Public Sub EscapeContextualKeywordsInQuery1(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document><) As Integer Return 23 End Function End Module ]]></Document> </Project> </Workspace>, host:=host, renameTo:="Group") result.AssertLabeledSpecialSpansAre("escaped", "[Group]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/530805")> <CombinatorialData> Public Sub EscapeMidIfNeeded(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document><![CDATA[ Module M Sub Main() {|stmt1:Goo|}() End Sub Sub [|$$Goo|]() ' Rename Goo to Mid End Sub End Module ]]></Document> </Project> </Workspace>, host:=host, renameTo:="Mid") result.AssertLabeledSpecialSpansAre("stmt1", "[Mid]", RelatedLocationType.NoConflict) End Using End Sub <Theory, WorkItem("http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/607067")> <CombinatorialData> Public Sub RenamingToRemAndUsingTypeCharactersIsNotAllowed(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" CommonReferences="true"> <Document><![CDATA[ Module Program Sub Main() Dim {|typechar:x%|} = 1 Console.WriteLine({|escaped:$$x|}) End Sub End Module ]]></Document> </Project> </Workspace>, host:=host, renameTo:="Rem") result.AssertLabeledSpansAre("typechar", "Rem%", RelatedLocationType.UnresolvedConflict) result.AssertLabeledSpansAre("escaped", "[Rem]", RelatedLocationType.NoConflict) End Using End Sub <WpfTheory, CombinatorialData> Public Sub RenameIdentifierBracketed(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" AssemblyName="VBAssembly" CommonReferences="true"> <Document FilePath="Test.vb"> Module Program Sub Main() Dim {|Stmt2:[x]|} = 1 {|Stmt1:$$x|} = 2 ' Rename x to y here End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="y") result.AssertLabeledSpansAre("Stmt1", "y", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("Stmt2", "y", RelatedLocationType.NoConflict) End Using End Sub <Theory, CombinatorialData> Public Sub RenameToIdentifierBracketed(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" AssemblyName="VBAssembly" CommonReferences="true"> <Document FilePath="Test.vb"> Module Program Sub Main() Dim {|Stmt2:[x]|} = 1 {|Stmt1:$$x|} = 2 ' Rename x to y here End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="[y]") result.AssertLabeledSpansAre("Stmt1", "y", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("Stmt2", "y", RelatedLocationType.NoConflict) End Using End Sub <Theory, CombinatorialData> Public Sub RenameToIdentifierBracketed_2(host As RenameTestHost) Using result = RenameEngineResult.Create(_outputHelper, <Workspace> <Project Language="Visual Basic" AssemblyName="VBAssembly" CommonReferences="true"> <Document FilePath="Test.vb"> Class A Class {|decl:$$B|} End Class End Class Module Program Sub Main() Dim x = new [A].{|stmt1:[B]|} End Sub End Module </Document> </Project> </Workspace>, host:=host, renameTo:="[C]") result.AssertLabeledSpansAre("decl", "C", RelatedLocationType.NoConflict) result.AssertLabeledSpansAre("stmt1", "C", RelatedLocationType.NoConflict) End Using End Sub End Class End Namespace