================ @@ -1005,14 +1332,22 @@ class InlayHintVisitor : public RecursiveASTVisitor<InlayHintVisitor> { // The sugared type is more useful in some cases, and the canonical // type in other cases. auto Desugared = maybeDesugar(AST, T); - std::string TypeName = Desugared.getAsString(TypeHintPolicy); - if (T != Desugared && !shouldPrintTypeHint(TypeName)) { + std::vector<InlayHintLabelPart> Chunks; + TypeInlayHintLabelPartBuilder Builder(Desugared, AST, MainFilePath, + TypeHintPolicy, Prefix, Chunks); + Builder.Visit(Desugared.getTypePtr()); + if (T != Desugared && !shouldPrintTypeHint(Chunks)) { // If the desugared type is too long to display, fallback to the sugared // type. - TypeName = T.getAsString(TypeHintPolicy); + Chunks.clear(); + TypeInlayHintLabelPartBuilder Builder(T, AST, MainFilePath, + TypeHintPolicy, Prefix, Chunks); + Builder.Visit(T.getTypePtr()); } - if (shouldPrintTypeHint(TypeName)) - addInlayHint(R, HintSide::Right, InlayHintKind::Type, Prefix, TypeName, + if (shouldPrintTypeHint(Chunks)) + addInlayHint(R, HintSide::Right, InlayHintKind::Type, + /*Prefix=*/"", // We have handled prefixes in the builder. ---------------- zyn0217 wrote:
I'm trying to put these prefixes i.e. ": " together with those unclickable type hints. i.e. to emit `: S` instead of adding such prefixes outside of the builder - we would end up copying the whole vector otherwise. https://github.com/llvm/llvm-project/pull/86629 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits