aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/ExtractAPI/DeclarationFragments.cpp
diff options
context:
space:
mode:
authorDaniel Grumberg <dgrumberg@apple.com>2024-09-05 09:15:09 +0100
committerGitHub <noreply@github.com>2024-09-05 09:15:09 +0100
commitcf1ad28169be5d026ec95f351b56b0c090b3e682 (patch)
tree6286cbc23446070ac90a0d3bce064271c56a1019 /clang/lib/ExtractAPI/DeclarationFragments.cpp
parentf1ac334b13c22222ed5c71bad04ed8345b2be135 (diff)
downloadllvm-cf1ad28169be5d026ec95f351b56b0c090b3e682.zip
llvm-cf1ad28169be5d026ec95f351b56b0c090b3e682.tar.gz
llvm-cf1ad28169be5d026ec95f351b56b0c090b3e682.tar.bz2
[clang][ExtractAPI] Handle AttributedType fragments transparently (#107262)
rdar://131958623
Diffstat (limited to 'clang/lib/ExtractAPI/DeclarationFragments.cpp')
-rw-r--r--clang/lib/ExtractAPI/DeclarationFragments.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/lib/ExtractAPI/DeclarationFragments.cpp b/clang/lib/ExtractAPI/DeclarationFragments.cpp
index d77bb1d..06ce5ed 100644
--- a/clang/lib/ExtractAPI/DeclarationFragments.cpp
+++ b/clang/lib/ExtractAPI/DeclarationFragments.cpp
@@ -276,6 +276,19 @@ DeclarationFragments DeclarationFragmentsBuilder::getFragmentsForType(
DeclarationFragments Fragments;
+ if (const MacroQualifiedType *MQT = dyn_cast<MacroQualifiedType>(T)) {
+ Fragments.append(
+ getFragmentsForType(MQT->getUnderlyingType(), Context, After));
+ return Fragments;
+ }
+
+ if (const AttributedType *AT = dyn_cast<AttributedType>(T)) {
+ // FIXME: Serialize Attributes correctly
+ Fragments.append(
+ getFragmentsForType(AT->getModifiedType(), Context, After));
+ return Fragments;
+ }
+
// An ElaboratedType is a sugar for types that are referred to using an
// elaborated keyword, e.g., `struct S`, `enum E`, or (in C++) via a
// qualified name, e.g., `N::M::type`, or both.