#pragma once #include "AST/SymbolID.h" #include "AST/SourceCode.h" #include "Index/Shared.h" #include "Support/JSON.h" namespace clice::feature { struct InlayHintKind : refl::Enum { enum Kind { Params, InvalidEnum, }; using Enum::Enum; }; struct InlayHint { /// The position offset of the inlay hint in the source code. uint32_t offset; /// The kind/category of the inlay hint. InlayHintKind kind; /// The label parts of the inlay hint. /// Each SymbolID consists of two parts: the symbol name and its USR hash. /// For symbols without a USR (e.g., built-in types or function parameters), /// the symbol hash will be empty. /// Otherwise, the symbol hash is non-empty and can be used for "go-to-definition". std::vector parts; }; using InlayHints = std::vector; InlayHints inlayHints(CompilationUnit& unit, LocalSourceRange target); index::Shared indexInlayHint(CompilationUnit& unit); } // namespace clice::feature