Exemple #1
0
        private (SyntaxTriviaList trailingTrivia, SyntaxTriviaList leadingTrivia) GetTrailingAndLeadingTrivia(
            KeyValuePair <ValueTuple <SyntaxToken, SyntaxToken>,
                          TriviaData> pair,
            CancellationToken cancellationToken)
        {
            if (pair.Key.Item1.RawKind == 0)
            {
                return(default(SyntaxTriviaList), GetLeadingTriviaAtBeginningOfTree(pair.Key, pair.Value, cancellationToken));
            }

            if (pair.Value is TriviaDataWithList csharpTriviaData)
            {
                var triviaList = csharpTriviaData.GetTriviaList(cancellationToken);
                var index      = GetFirstEndOfLineIndexOrRightBeforeComment(triviaList);

                return(TriviaHelpers.CreateTriviaListFromTo(triviaList, 0, index),
                       TriviaHelpers.CreateTriviaListFromTo(triviaList, index + 1, triviaList.Count - 1));
            }

            // whitespace trivia case such as spaces/tabs/new lines
            // these will always have a single text change
            var text           = pair.Value.GetTextChanges(GetTextSpan(pair.Key)).Single().NewText ?? "";
            var trailingTrivia = SyntaxFactory.ParseTrailingTrivia(text);

            var width         = trailingTrivia.GetFullWidth();
            var leadingTrivia = SyntaxFactory.ParseLeadingTrivia(text.Substring(width));

            return(trailingTrivia, leadingTrivia);
        }