public override void VisitNamedType(INamedTypeSymbol symbol) { if ((Options & NameOptions.UseAlias) == NameOptions.UseAlias && TrySpecialType(symbol)) { return; } if (symbol.ContainingType != null) { symbol.ContainingType.Accept(this); Append("."); } else if ((Options & NameOptions.WithNamespace) == NameOptions.WithNamespace) { if (!VisitorHelper.InGlobalNamespace(symbol)) { symbol.ContainingNamespace.Accept(this); Append("."); } } if (symbol.IsTupleType) { if ((Options & NameOptions.Qualified) == NameOptions.Qualified) { Append("ValueTuple"); symbol = symbol.TupleUnderlyingType ?? symbol; } else { Append("("); for (var i = 0; i < symbol.TupleElements.Length; i++) { if (i > 0) { Append(", "); } var tupleElement = symbol.TupleElements[i]; if (!tupleElement.IsImplicitlyDeclared) { Append(tupleElement.Name); Append(" As "); } tupleElement.Type.Accept(this); } Append(")"); } } else { Append(symbol.Name); } if ((Options & NameOptions.WithTypeGenericParameter) == NameOptions.WithTypeGenericParameter && symbol.TypeParameters.Length > 0) { if (symbol.TypeArguments != null && symbol.TypeArguments.Length > 0) { if (symbol.IsUnboundGenericType) { WriteGeneric(symbol.TypeArguments.Length); } else { WriteGeneric(symbol.TypeArguments); } } else { WriteGeneric(symbol.TypeParameters); } } }