[clang] [clang]: support std::meta::info for primitive types (PR #190356)

Daniel M. Katz via cfe-commits cfe-commits at lists.llvm.org
Sat Apr 4 08:17:23 PDT 2026


================
@@ -494,6 +500,18 @@ static void profileIntValue(llvm::FoldingSetNodeID &ID, const llvm::APInt &V) {
     ID.AddInteger((uint32_t)V.extractBitsAsZExtValue(std::min(32u, N - I), I));
 }
 
+static void profileReflection(llvm::FoldingSetNodeID &ID, APValue V) {
+  ID.AddInteger(static_cast<int>(V.getReflectionOperandKind()));
+  switch (V.getReflectionOperandKind()) {
+    case ReflectionKind::Type: {
+      const TypeSourceInfo* info = static_cast<const TypeSourceInfo*>(V.getOpaqueReflectionOperand());
+      ID.AddPointer((info->getType().getCanonicalType().getAsOpaquePtr()));
----------------
katzdm wrote:

We do want to remove things like decltypes, but we don't want to remove aliases. Not sure if we have an existing "unwrapping" method like that; if not, perhaps it would be worth adding such a sibling method to `ASTContext`.

https://github.com/llvm/llvm-project/pull/190356


More information about the cfe-commits mailing list