https://github.com/w-utter updated https://github.com/llvm/llvm-project/pull/212648
>From ded00301e58cb228a318e0c008bdcd33a4c836c7 Mon Sep 17 00:00:00 2001 From: will <[email protected]> Date: Wed, 29 Jul 2026 08:52:56 +1000 Subject: [PATCH] [libclang] Add clang_Type_getDependentSizeExpr --- clang/include/clang-c/Index.h | 8 ++++++++ clang/tools/libclang/CXType.cpp | 26 ++++++++++++++++++++++++++ clang/tools/libclang/libclang.map | 1 + 3 files changed, 35 insertions(+) diff --git a/clang/include/clang-c/Index.h b/clang/include/clang-c/Index.h index 8427236e0b444..3c2ae30d9bbb9 100644 --- a/clang/include/clang-c/Index.h +++ b/clang/include/clang-c/Index.h @@ -3734,6 +3734,14 @@ CINDEX_LINKAGE CXType clang_Type_getModifiedType(CXType T); */ CINDEX_LINKAGE CXType clang_Type_getValueType(CXType CT); + +/** + * Gets the expression associated with this dependent sized array + * + * If a non-dependent type is passed in, an invalid cursor is returned. + */ +CINDEX_LINKAGE CXCursor clang_Type_getDependentSizeExpr(CXType CT); + /** * Return the offset of the field represented by the Cursor. * diff --git a/clang/tools/libclang/CXType.cpp b/clang/tools/libclang/CXType.cpp index 0063939dec423..52e813ea3c795 100644 --- a/clang/tools/libclang/CXType.cpp +++ b/clang/tools/libclang/CXType.cpp @@ -912,6 +912,32 @@ long long clang_getNumElements(CXType CT) { return result; } +CXCursor clang_Type_getDependentSizeExpr(CXType CT) { + QualType T = GetQualType(CT); + const Type *TP = T.getTypePtrOrNull(); + + if (!TP) + return cxcursor::MakeCXCursorInvalid(CXCursor_NoDeclFound); + + const Expr* E = nullptr; + + switch (TP->getTypeClass()) { + case Type::DependentSizedArray: + E = cast<DependentSizedArrayType> (TP)->getSizeExpr(); + break; + case Type::DependentSizedExtVector: + E = cast<DependentSizedExtVectorType> (TP)->getSizeExpr(); + break; + default: + break; + } + + if (!E) + return cxcursor::MakeCXCursorInvalid(CXCursor_NoDeclFound); + + return cxcursor::MakeCXCursor(E, nullptr, GetTU(CT)); +} + CXType clang_getArrayElementType(CXType CT) { QualType ET = QualType(); QualType T = GetQualType(CT); diff --git a/clang/tools/libclang/libclang.map b/clang/tools/libclang/libclang.map index 57f281096929d..4864cb6da5929 100644 --- a/clang/tools/libclang/libclang.map +++ b/clang/tools/libclang/libclang.map @@ -461,6 +461,7 @@ LLVM_23 { global: clang_ModuleCache_prune; clang_ModuleCache_pruneWithCallback; + clang_Type_getDependentSizeExpr; }; # Example of how to add a new symbol version entry. If you do add a new symbol _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
