public static bool TryParseGenericName( this SyntaxToken genericIdentifier, CancellationToken cancellationToken, [NotNullWhen(true)] out GenericNameSyntax?genericName ) { if ( genericIdentifier.GetNextToken(includeSkipped: true).Kind() == SyntaxKind.LessThanToken ) { var lastToken = genericIdentifier.FindLastTokenOfPartialGenericName(); var syntaxTree = genericIdentifier.SyntaxTree !; var name = SyntaxFactory.ParseName( syntaxTree .GetText(cancellationToken) .ToString( TextSpan.FromBounds(genericIdentifier.SpanStart, lastToken.Span.End) ) ); genericName = name as GenericNameSyntax; return(genericName != null); } genericName = null; return(false); }
protected override TextSpan GetTextSpan(SyntaxToken genericIdentifier, SyntaxToken lessThanToken) { var lastToken = genericIdentifier.FindLastTokenOfPartialGenericName(); var nextToken = lastToken.GetNextNonZeroWidthTokenOrEndOfFile(); Contract.ThrowIfTrue(nextToken.Kind() == 0); return TextSpan.FromBounds(genericIdentifier.SpanStart, nextToken.SpanStart); }
protected override TextSpan GetTextSpan(SyntaxToken genericIdentifier, SyntaxToken lessThanToken) { var lastToken = genericIdentifier.FindLastTokenOfPartialGenericName(); var nextToken = lastToken.GetNextNonZeroWidthTokenOrEndOfFile(); Contract.ThrowIfTrue(nextToken.Kind() == 0); return(TextSpan.FromBounds(genericIdentifier.SpanStart, nextToken.SpanStart)); }