in tools/apiview/parsers/csharp-api-parser/CSharpAPIParser/TreeToken/CodeFileBuilder.cs [695:758]
private ReviewToken? MapToken(ISymbol definedSymbol, SymbolDisplayPart symbolDisplayPart, SymbolDisplayPart previousSymbolDisplayPart, ReviewToken? previousToken)
{
string? navigateToId = null;
var symbol = symbolDisplayPart.Symbol;
if (symbol is INamedTypeSymbol &&
(definedSymbol == null || !SymbolEqualityComparer.Default.Equals(definedSymbol, symbol)) &&
SymbolEqualityComparer.Default.Equals(_assembly, symbol.ContainingAssembly))
{
navigateToId = symbol.GetId();
}
var tokenValue = symbolDisplayPart.ToString();
ReviewToken? token = null;
switch (symbolDisplayPart.Kind)
{
case SymbolDisplayPartKind.TypeParameterName:
case SymbolDisplayPartKind.AliasName:
case SymbolDisplayPartKind.AssemblyName:
case SymbolDisplayPartKind.ClassName:
case SymbolDisplayPartKind.DelegateName:
case SymbolDisplayPartKind.EnumName:
case SymbolDisplayPartKind.ErrorTypeName:
case SymbolDisplayPartKind.InterfaceName:
case SymbolDisplayPartKind.StructName:
token = ReviewToken.CreateTypeNameToken(tokenValue, false);
break;
case SymbolDisplayPartKind.Keyword:
token = ReviewToken.CreateKeywordToken(tokenValue, false);
break;
case SymbolDisplayPartKind.StringLiteral:
token = ReviewToken.CreateStringLiteralToken(tokenValue, false);
break;
case SymbolDisplayPartKind.Punctuation:
token = ReviewToken.CreatePunctuationToken(tokenValue, false);
break;
case SymbolDisplayPartKind.Space:
if (previousToken != null)
{
previousToken.HasSuffixSpace = true;
}
break;
case SymbolDisplayPartKind.PropertyName:
case SymbolDisplayPartKind.EventName:
case SymbolDisplayPartKind.FieldName:
case SymbolDisplayPartKind.MethodName:
case SymbolDisplayPartKind.Operator:
case SymbolDisplayPartKind.EnumMemberName:
case SymbolDisplayPartKind.ExtensionMethodName:
case SymbolDisplayPartKind.ConstantName:
token = ReviewToken.CreateMemberNameToken(tokenValue, false);
break;
default:
token = ReviewToken.CreateTextToken(tokenValue, hasSuffixSpace: false);
break;
}
if (token != null && !String.IsNullOrWhiteSpace(navigateToId))
{
token.NavigateToId = navigateToId!;
}
return token;
}