string GetDelegateMarkup (INamedTypeSymbol delegateType)
{
var result = new StringBuilder ();
var type = delegateType.IsUnboundGenericType ? delegateType.OriginalDefinition : delegateType;
var method = type.GetDelegateInvokeMethod ();
AppendModifiers (result, type);
result.Append (Highlight ("delegate ", colorStyle.KeywordDeclaration));
if (method != null)
result.Append (GetTypeReferenceString (method.ReturnType));
if (BreakLineAfterReturnType) {
result.AppendLine ();
} else {
result.Append (" ");
}
result.Append (FilterEntityName (type.Name));
if (type.TypeArguments.Length > 0) {
AppendTypeArgumentList (result, type);
} else {
AppendTypeParameterList (result, type);
}
// TODO
// if (formattingOptions.SpaceBeforeMethodDeclarationParameterComma)
// result.Append (" ");
result.Append ('(');
AppendParameterList (
result,
method.Parameters,
false /* formattingOptions.SpaceBeforeDelegateDeclarationParameterComma */,
false /* formattingOptions.SpaceAfterDelegateDeclarationParameterComma */);
result.Append (')');
return result.ToString ();
}