private static void AppendParameters(this ICollection<SymbolMarkupToken> markup, ImmutableArray<ParameterSymbol> parameters) { markup.AppendPunctuation("("); var isFirst = true; foreach (var parameterSymbol in parameters) { if (isFirst) isFirst = false; else { markup.AppendPunctuation(","); markup.AppendSpace(); } markup.AppendParameterSymbolInfo(parameterSymbol); } markup.AppendPunctuation(")"); }
private static void AppendParentScope(this ICollection<SymbolMarkupToken> markup, Symbol symbol) { if (symbol.Parent != null) AppendParentScope(markup, symbol.Parent); switch (symbol.Kind) { case SymbolKind.Namespace: markup.AppendName(SymbolMarkupKind.NamespaceName, symbol.Name); markup.AppendPunctuation("::"); break; case SymbolKind.Class: markup.AppendName(SymbolMarkupKind.ClassName, symbol.Name); markup.AppendPunctuation("::"); break; default: return; } }
private static void AppendFunctionSymbolInfo(this ICollection<SymbolMarkupToken> markup, FunctionSymbol symbol) { markup.AppendType(symbol.ReturnType, false); markup.AppendSpace(); if (symbol.Parent is TypeSymbol) { markup.AppendTypeName((TypeSymbol) symbol.Parent); markup.AppendPunctuation("."); } if (symbol.IsNumericConstructor) markup.AppendKeyword(symbol.Name); else markup.AppendName(SymbolMarkupKind.FunctionName, symbol.Name); markup.AppendParameters(symbol.Parameters); }
private static void AppendFieldSymbolInfo(this ICollection<SymbolMarkupToken> markup, FieldSymbol symbol) { markup.AppendPlainText("(field)"); markup.AppendSpace(); markup.AppendType(symbol.ValueType, true); markup.AppendSpace(); markup.AppendType((TypeSymbol) symbol.Parent, false); markup.AppendPunctuation("."); markup.AppendName(SymbolMarkupKind.FieldName, symbol.Name); }