|
' 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.Threading
Imports Microsoft.CodeAnalysis.Formatting
Imports Microsoft.CodeAnalysis.Text
Namespace Microsoft.CodeAnalysis.VisualBasic.Formatting
Partial Friend Class TriviaDataFactory
Private NotInheritable Class ModifiedComplexTrivia
Inherits TriviaDataWithList
Private ReadOnly _original As ComplexTrivia
Public Sub New(options As LineFormattingOptions, original As ComplexTrivia, lineBreaks As Integer, space As Integer)
MyBase.New(options)
Contract.ThrowIfNull(original)
Me._original = original
' linebreak and space can become negative during formatting. but it should be normalized to >= 0
' at the end.
Me.LineBreaks = lineBreaks
Me.Spaces = space
End Sub
Public Overrides ReadOnly Property ContainsChanges() As Boolean
Get
Return False
End Get
End Property
Public Overrides ReadOnly Property TreatAsElastic() As Boolean
Get
Return Me._original.TreatAsElastic
End Get
End Property
Public Overrides ReadOnly Property IsWhitespaceOnlyTrivia() As Boolean
Get
Return False
End Get
End Property
Public Overrides Function WithSpace(space As Integer, context As FormattingContext, formattingRules As ChainedFormattingRules) As TriviaData
Return Me._original.WithSpace(space, context, formattingRules)
End Function
Public Overrides Function WithLine(line As Integer,
indentation As Integer,
context As FormattingContext,
formattingRules As ChainedFormattingRules,
cancellationToken As CancellationToken) As TriviaData
Return Me._original.WithLine(line, indentation, context, formattingRules, cancellationToken)
End Function
Public Overrides Function WithIndentation(indentation As Integer,
context As FormattingContext,
formattingRules As ChainedFormattingRules,
cancellationToken As CancellationToken) As TriviaData
Return Me._original.WithIndentation(indentation, context, formattingRules, cancellationToken)
End Function
Public Overrides Sub Format(context As FormattingContext,
formattingRules As ChainedFormattingRules,
formattingResultApplier As Action(Of Integer, TokenStream, TriviaData),
cancellationToken As CancellationToken,
Optional tokenPairIndex As Integer = TokenPairIndexNotNeeded)
Contract.ThrowIfFalse(Me.SecondTokenIsFirstTokenOnLine)
Dim commonToken1 As SyntaxToken = Me._original.Token1
Dim commonToken2 As SyntaxToken = Me._original.Token2
Dim list = New TriviaList(commonToken1.TrailingTrivia, commonToken2.LeadingTrivia)
Contract.ThrowIfFalse(list.Count > 0)
' okay, now, check whether we need or are able to format noisy tokens
If CodeShapeAnalyzer.ContainsSkippedTokensOrText(list) Then
Return
End If
formattingResultApplier(
tokenPairIndex,
context.TokenStream,
New FormattedComplexTrivia(context, formattingRules, Me._original.Token1, Me._original.Token2, Me.LineBreaks, Me.Spaces, Me._original.OriginalString, cancellationToken))
End Sub
Public Overrides Function GetTextChanges(span As TextSpan) As IEnumerable(Of TextChange)
Throw New NotImplementedException()
End Function
Public Overrides Function GetTriviaList(cancellationToken As CancellationToken) As SyntaxTriviaList
Throw New NotImplementedException()
End Function
End Class
End Class
End Namespace
|