/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/ExpressionEvaluator/VisualBasic/Source/ResultProvider/VisualBasicFormatter.vb
76 строк
3 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 System.Collections.ObjectModel Imports Microsoft.CodeAnalysis.ExpressionEvaluator Imports Microsoft.VisualStudio.Debugger.Evaluation.ClrCompilation Imports Microsoft.VisualStudio.Debugger.Metadata Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator ''' <summary> ''' Computes string representations of <see cref="DkmClrValue"/> instances. ''' </summary> Partial Friend NotInheritable Class VisualBasicFormatter Inherits Formatter ''' <summary> ''' Singleton instance of VisualBasicFormatter (created using default constructor). ''' </summary> Friend Shared ReadOnly Instance As VisualBasicFormatter = New VisualBasicFormatter() Public Sub New() MyBase.New(defaultFormat:="{{{0}}}", nullString:="Nothing", thisString:="Me") End Sub Friend Overrides Function IsValidIdentifier(name As String) As Boolean Return SyntaxFacts.IsValidIdentifier(name) End Function Friend Overrides Function IsIdentifierPartCharacter(c As Char) As Boolean Return SyntaxFacts.IsIdentifierPartCharacter(c) End Function Friend Overrides Function IsPredefinedType(type As Type) As Boolean Return type.IsPredefinedType() End Function Friend Overrides Function IsWhitespace(c As Char) As Boolean Return SyntaxFacts.IsWhitespace(c) End Function ' TODO https://github.com/dotnet/roslyn/issues/37536 ' This parsing is imprecise and may result in bad expressions. Friend Overrides Function TrimAndGetFormatSpecifiers(expression As String, ByRef formatSpecifiers As ReadOnlyCollection(Of String)) As String expression = RemoveComments(expression) expression = RemoveFormatSpecifiers(expression, formatSpecifiers) Return RemoveLeadingAndTrailingWhitespace(expression) End Function ' TODO https://github.com/dotnet/roslyn/issues/60581 Friend Overrides Function GetOriginalLocalVariableName(name As String) As String Return name End Function ' TODO Implement this VB. https://github.com/dotnet/roslyn/issues/60581 Friend Overrides Function GetOriginalFieldName(name As String) As String Return name End Function Private Shared Function RemoveComments(expression As String) As String ' Workaround for https://dev.azure.com/devdiv/DevDiv/_workitems/edit/847849 ' Do not remove any comments that might be in a string. ' This won't work when there are quotes in the comment, but that's not that common. Dim lastQuote As Integer = expression.LastIndexOf(""""c) + 1 Dim index = expression.IndexOf("'"c, lastQuote) If index < 0 Then Return expression End If Return expression.Substring(0, index) End Function End Class End Namespace