Lines Matching +full:- +full:d +full:-
1 //===--- DeclPrinter.cpp - Printing implementation for Decl ASTs ----------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 // AST back out to C/Objective-C/C++/Objective-C++ code.
12 //===----------------------------------------------------------------------===//
44 /// Print an Objective-C method type in parentheses.
46 /// \param Quals The Objective-C declaration qualifiers.
62 void VisitTranslationUnitDecl(TranslationUnitDecl *D);
63 void VisitTypedefDecl(TypedefDecl *D);
64 void VisitTypeAliasDecl(TypeAliasDecl *D);
65 void VisitEnumDecl(EnumDecl *D);
66 void VisitRecordDecl(RecordDecl *D);
67 void VisitEnumConstantDecl(EnumConstantDecl *D);
68 void VisitEmptyDecl(EmptyDecl *D);
69 void VisitFunctionDecl(FunctionDecl *D);
70 void VisitFriendDecl(FriendDecl *D);
71 void VisitFieldDecl(FieldDecl *D);
72 void VisitVarDecl(VarDecl *D);
73 void VisitLabelDecl(LabelDecl *D);
74 void VisitParmVarDecl(ParmVarDecl *D);
75 void VisitFileScopeAsmDecl(FileScopeAsmDecl *D);
76 void VisitTopLevelStmtDecl(TopLevelStmtDecl *D);
77 void VisitImportDecl(ImportDecl *D);
78 void VisitStaticAssertDecl(StaticAssertDecl *D);
79 void VisitNamespaceDecl(NamespaceDecl *D);
80 void VisitUsingDirectiveDecl(UsingDirectiveDecl *D);
81 void VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
82 void VisitCXXRecordDecl(CXXRecordDecl *D);
83 void VisitLinkageSpecDecl(LinkageSpecDecl *D);
84 void VisitTemplateDecl(const TemplateDecl *D);
85 void VisitFunctionTemplateDecl(FunctionTemplateDecl *D);
86 void VisitClassTemplateDecl(ClassTemplateDecl *D);
88 ClassTemplateSpecializationDecl *D);
90 ClassTemplatePartialSpecializationDecl *D);
91 void VisitObjCMethodDecl(ObjCMethodDecl *D);
92 void VisitObjCImplementationDecl(ObjCImplementationDecl *D);
93 void VisitObjCInterfaceDecl(ObjCInterfaceDecl *D);
94 void VisitObjCProtocolDecl(ObjCProtocolDecl *D);
95 void VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D);
96 void VisitObjCCategoryDecl(ObjCCategoryDecl *D);
97 void VisitObjCCompatibleAliasDecl(ObjCCompatibleAliasDecl *D);
98 void VisitObjCPropertyDecl(ObjCPropertyDecl *D);
99 void VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D);
100 void VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D);
101 void VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D);
102 void VisitUsingDecl(UsingDecl *D);
103 void VisitUsingEnumDecl(UsingEnumDecl *D);
104 void VisitUsingShadowDecl(UsingShadowDecl *D);
105 void VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D);
106 void VisitOMPAllocateDecl(OMPAllocateDecl *D);
107 void VisitOMPRequiresDecl(OMPRequiresDecl *D);
108 void VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D);
109 void VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D);
110 void VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D);
113 void VisitHLSLBufferDecl(HLSLBufferDecl *D);
123 prettyPrintAttributes(const Decl *D,
125 void prettyPrintPragmas(Decl *D);
157 while (!BaseType->isSpecifierType()) { in GetBaseType()
158 if (const PointerType *PTy = BaseType->getAs<PointerType>()) in GetBaseType()
159 BaseType = PTy->getPointeeType(); in GetBaseType()
161 BaseType->getAs<ObjCObjectPointerType>()) in GetBaseType()
162 BaseType = OPT->getPointeeType(); in GetBaseType()
163 else if (const BlockPointerType *BPy = BaseType->getAs<BlockPointerType>()) in GetBaseType()
164 BaseType = BPy->getPointeeType(); in GetBaseType()
166 BaseType = ATy->getElementType(); in GetBaseType()
167 else if (const FunctionType *FTy = BaseType->getAs<FunctionType>()) in GetBaseType()
168 BaseType = FTy->getReturnType(); in GetBaseType()
169 else if (const VectorType *VTy = BaseType->getAs<VectorType>()) in GetBaseType()
170 BaseType = VTy->getElementType(); in GetBaseType()
171 else if (const ReferenceType *RTy = BaseType->getAs<ReferenceType>()) in GetBaseType()
172 BaseType = RTy->getPointeeType(); in GetBaseType()
173 else if (const AutoType *ATy = BaseType->getAs<AutoType>()) in GetBaseType()
174 BaseType = ATy->getDeducedType(); in GetBaseType()
175 else if (const ParenType *PTy = BaseType->getAs<ParenType>()) in GetBaseType()
176 BaseType = PTy->desugar(); in GetBaseType()
184 static QualType getDeclType(Decl* D) { in getDeclType() argument
185 if (TypedefNameDecl* TDD = dyn_cast<TypedefNameDecl>(D)) in getDeclType()
186 return TDD->getUnderlyingType(); in getDeclType()
187 if (ValueDecl* VD = dyn_cast<ValueDecl>(D)) in getDeclType()
188 return VD->getType(); in getDeclType()
196 (*Begin)->print(Out, Policy, Indentation); in printGroup()
220 (*Begin)->print(Out, SubPolicy, Indentation); in printGroup()
227 while (!DC->isTranslationUnit()) in dumpDeclContext()
228 DC = DC->getParent(); in dumpDeclContext()
230 ASTContext &Ctx = cast<TranslationUnitDecl>(DC)->getASTContext(); in dumpDeclContext()
242 const Decl *D) { in getPosAsWritten() argument
243 SourceLocation ALoc = A->getLoc(); in getPosAsWritten()
244 SourceLocation DLoc = D->getLocation(); in getPosAsWritten()
245 const ASTContext &C = D->getASTContext(); in getPosAsWritten()
256 bool DeclPrinter::prettyPrintAttributes(const Decl *D, in prettyPrintAttributes() argument
260 if (D->hasAttrs()) { in prettyPrintAttributes()
261 const AttrVec &Attrs = D->getAttrs(); in prettyPrintAttributes()
263 if (A->isInherited() || A->isImplicit()) in prettyPrintAttributes()
266 if (Policy.PolishForDeclaration && !A->isKeywordAttribute()) in prettyPrintAttributes()
268 switch (A->getKind()) { in prettyPrintAttributes()
274 AttrPosAsWritten APos = getPosAsWritten(A, D); in prettyPrintAttributes()
280 A->printPretty(Out, Policy); in prettyPrintAttributes()
292 void DeclPrinter::prettyPrintPragmas(Decl *D) { in prettyPrintPragmas() argument
296 if (D->hasAttrs()) { in prettyPrintPragmas()
297 AttrVec &Attrs = D->getAttrs(); in prettyPrintPragmas()
299 switch (A->getKind()) { in prettyPrintPragmas()
303 A->printPretty(Out, Policy); in prettyPrintPragmas()
317 if (auto *PET = T->getAs<PackExpansionType>()) { in printDeclType()
319 T = PET->getPattern(); in printDeclType()
325 this->Indent(); in ProcessDeclGroup()
342 for (const auto *BMInitializer : CDecl->inits()) { in PrintConstructorInitializers()
343 if (BMInitializer->isInClassMemberInitializer()) in PrintConstructorInitializers()
345 if (!BMInitializer->isWritten()) in PrintConstructorInitializers()
356 if (BMInitializer->isAnyMemberInitializer()) { in PrintConstructorInitializers()
357 FieldDecl *FD = BMInitializer->getAnyMember(); in PrintConstructorInitializers()
359 } else if (BMInitializer->isDelegatingInitializer()) { in PrintConstructorInitializers()
360 Out << CDecl->getNameAsString(); in PrintConstructorInitializers()
362 Out << QualType(BMInitializer->getBaseClass(), 0).getAsString(Policy); in PrintConstructorInitializers()
365 if (Expr *Init = BMInitializer->getInit()) { in PrintConstructorInitializers()
372 Init = Tmp->getSubExpr(); in PrintConstructorInitializers()
374 Init = Init->IgnoreParens(); in PrintConstructorInitializers()
380 Args = ParenList->getExprs(); in PrintConstructorInitializers()
381 NumArgs = ParenList->getNumExprs(); in PrintConstructorInitializers()
384 Args = Construct->getArgs(); in PrintConstructorInitializers()
385 NumArgs = Construct->getNumArgs(); in PrintConstructorInitializers()
390 SimpleInit->printPretty(Out, nullptr, Policy, Indentation, "\n", in PrintConstructorInitializers()
394 assert(Args[I] != nullptr && "Expected non-null Expr"); in PrintConstructorInitializers()
400 Args[I]->printPretty(Out, nullptr, Policy, Indentation, "\n", in PrintConstructorInitializers()
411 if (BMInitializer->isPackExpansion()) in PrintConstructorInitializers()
416 //----------------------------------------------------------------------------
418 //----------------------------------------------------------------------------
428 for (DeclContext::decl_iterator D = DC->decls_begin(), DEnd = DC->decls_end(); in VisitDeclContext() local
429 D != DEnd; ++D) { in VisitDeclContext()
433 if (isa<ObjCIvarDecl>(*D)) in VisitDeclContext()
436 // Skip over implicit declarations in pretty-printing mode. in VisitDeclContext()
437 if (D->isImplicit()) in VisitDeclContext()
442 if (auto FD = dyn_cast<FunctionDecl>(*D)) in VisitDeclContext()
443 if (FD->getTemplateSpecializationKind() == TSK_ImplicitInstantiation && in VisitDeclContext()
450 // also need to merge to avoid splitting off a stand-alone struct in VisitDeclContext()
458 // non-free-standing tag declaration. in VisitDeclContext()
459 QualType CurDeclType = getDeclType(*D); in VisitDeclContext()
463 cast<ElaboratedType>(BaseType)->getOwnedTagDecl() == Decls[0]) { in VisitDeclContext()
464 Decls.push_back(*D); in VisitDeclContext()
475 if (isa<TagDecl>(*D) && !cast<TagDecl>(*D)->isFreeStanding()) { in VisitDeclContext()
476 Decls.push_back(*D); in VisitDeclContext()
480 if (isa<AccessSpecDecl>(*D)) { in VisitDeclContext()
481 Indentation -= Policy.Indentation; in VisitDeclContext()
482 this->Indent(); in VisitDeclContext()
483 Print(D->getAccess()); in VisitDeclContext()
489 this->Indent(); in VisitDeclContext()
490 Visit(*D); in VisitDeclContext()
494 if (isa<OMPThreadPrivateDecl>(*D) || isa<OMPDeclareReductionDecl>(*D) || in VisitDeclContext()
495 isa<OMPDeclareMapperDecl>(*D) || isa<OMPRequiresDecl>(*D) || in VisitDeclContext()
496 isa<OMPAllocateDecl>(*D)) in VisitDeclContext()
498 else if (isa<ObjCMethodDecl>(*D) && cast<ObjCMethodDecl>(*D)->hasBody()) in VisitDeclContext()
500 else if (auto FD = dyn_cast<FunctionDecl>(*D)) { in VisitDeclContext()
501 if (FD->doesThisDeclarationHaveABody() && !FD->isDefaulted()) in VisitDeclContext()
505 } else if (auto TD = dyn_cast<FunctionTemplateDecl>(*D)) { in VisitDeclContext()
506 if (TD->getTemplatedDecl()->doesThisDeclarationHaveABody()) in VisitDeclContext()
512 ObjCCategoryDecl, HLSLBufferDecl>(*D)) in VisitDeclContext()
514 else if (isa<EnumConstantDecl>(*D)) { in VisitDeclContext()
515 DeclContext::decl_iterator Next = D; in VisitDeclContext()
525 ((isa<FunctionDecl>(*D) && in VisitDeclContext()
526 cast<FunctionDecl>(*D)->doesThisDeclarationHaveABody()) || in VisitDeclContext()
527 (isa<FunctionTemplateDecl>(*D) && in VisitDeclContext()
528 cast<FunctionTemplateDecl>(*D)->getTemplatedDecl()->doesThisDeclarationHaveABody()))) in VisitDeclContext()
535 if (D->hasAttr<OMPDeclareTargetDeclAttr>()) in VisitDeclContext()
543 Indentation -= Policy.Indentation; in VisitDeclContext()
546 void DeclPrinter::VisitTranslationUnitDecl(TranslationUnitDecl *D) { in VisitTranslationUnitDecl() argument
547 VisitDeclContext(D, false); in VisitTranslationUnitDecl()
550 void DeclPrinter::VisitTypedefDecl(TypedefDecl *D) { in VisitTypedefDecl() argument
554 if (D->isModulePrivate()) in VisitTypedefDecl()
557 QualType Ty = D->getTypeSourceInfo()->getType(); in VisitTypedefDecl()
558 Ty.print(Out, Policy, D->getName(), Indentation); in VisitTypedefDecl()
559 prettyPrintAttributes(D); in VisitTypedefDecl()
562 void DeclPrinter::VisitTypeAliasDecl(TypeAliasDecl *D) { in VisitTypeAliasDecl() argument
563 Out << "using " << *D; in VisitTypeAliasDecl()
564 prettyPrintAttributes(D); in VisitTypeAliasDecl()
565 Out << " = " << D->getTypeSourceInfo()->getType().getAsString(Policy); in VisitTypeAliasDecl()
568 void DeclPrinter::VisitEnumDecl(EnumDecl *D) { in VisitEnumDecl() argument
569 if (!Policy.SuppressSpecifiers && D->isModulePrivate()) in VisitEnumDecl()
572 if (D->isScoped()) { in VisitEnumDecl()
573 if (D->isScopedUsingClassTag()) in VisitEnumDecl()
579 prettyPrintAttributes(D); in VisitEnumDecl()
581 if (D->getDeclName()) in VisitEnumDecl()
582 Out << ' ' << D->getDeclName(); in VisitEnumDecl()
584 if (D->isFixed()) in VisitEnumDecl()
585 Out << " : " << D->getIntegerType().stream(Policy); in VisitEnumDecl()
587 if (D->isCompleteDefinition()) { in VisitEnumDecl()
589 VisitDeclContext(D); in VisitEnumDecl()
594 void DeclPrinter::VisitRecordDecl(RecordDecl *D) { in VisitRecordDecl() argument
595 if (!Policy.SuppressSpecifiers && D->isModulePrivate()) in VisitRecordDecl()
597 Out << D->getKindName(); in VisitRecordDecl()
599 prettyPrintAttributes(D); in VisitRecordDecl()
601 if (D->getIdentifier()) in VisitRecordDecl()
602 Out << ' ' << *D; in VisitRecordDecl()
604 if (D->isCompleteDefinition()) { in VisitRecordDecl()
606 VisitDeclContext(D); in VisitRecordDecl()
611 void DeclPrinter::VisitEnumConstantDecl(EnumConstantDecl *D) { in VisitEnumConstantDecl() argument
612 Out << *D; in VisitEnumConstantDecl()
613 prettyPrintAttributes(D); in VisitEnumConstantDecl()
614 if (Expr *Init = D->getInitExpr()) { in VisitEnumConstantDecl()
616 Init->printPretty(Out, nullptr, Policy, Indentation, "\n", &Context); in VisitEnumConstantDecl()
627 ES.getExpr()->printPretty(EOut, nullptr, Policy, Indentation, "\n", in printExplicitSpecifier()
639 StringRef prefix = T->isClassType() ? "class " in MaybePrintTagKeywordIfSupressingScopes()
640 : T->isStructureType() ? "struct " in MaybePrintTagKeywordIfSupressingScopes()
641 : T->isUnionType() ? "union " in MaybePrintTagKeywordIfSupressingScopes()
646 void DeclPrinter::VisitFunctionDecl(FunctionDecl *D) { in VisitFunctionDecl() argument
647 if (!D->getDescribedFunctionTemplate() && in VisitFunctionDecl()
648 !D->isFunctionTemplateSpecialization()) { in VisitFunctionDecl()
649 prettyPrintPragmas(D); in VisitFunctionDecl()
650 prettyPrintAttributes(D, AttrPosAsWritten::Left); in VisitFunctionDecl()
653 if (D->isFunctionTemplateSpecialization()) in VisitFunctionDecl()
655 else if (!D->getDescribedFunctionTemplate()) { in VisitFunctionDecl()
656 for (unsigned I = 0, NumTemplateParams = D->getNumTemplateParameterLists(); in VisitFunctionDecl()
658 printTemplateParameters(D->getTemplateParameterList(I)); in VisitFunctionDecl()
661 CXXConstructorDecl *CDecl = dyn_cast<CXXConstructorDecl>(D); in VisitFunctionDecl()
662 CXXConversionDecl *ConversionDecl = dyn_cast<CXXConversionDecl>(D); in VisitFunctionDecl()
663 CXXDeductionGuideDecl *GuideDecl = dyn_cast<CXXDeductionGuideDecl>(D); in VisitFunctionDecl()
665 switch (D->getStorageClass()) { in VisitFunctionDecl()
674 if (D->isInlineSpecified()) Out << "inline "; in VisitFunctionDecl()
675 if (D->isVirtualAsWritten()) Out << "virtual "; in VisitFunctionDecl()
676 if (D->isModulePrivate()) Out << "__module_private__ "; in VisitFunctionDecl()
677 if (D->isConstexprSpecified() && !D->isExplicitlyDefaulted()) in VisitFunctionDecl()
679 if (D->isConsteval()) Out << "consteval "; in VisitFunctionDecl()
680 else if (D->isImmediateFunction()) in VisitFunctionDecl()
682 ExplicitSpecifier ExplicitSpec = ExplicitSpecifier::getFromDecl(D); in VisitFunctionDecl()
692 Proto += D->getQualifiedNameAsString(); in VisitFunctionDecl()
696 if (const NestedNameSpecifier *NS = D->getQualifier()) { in VisitFunctionDecl()
697 NS->print(OS, Policy); in VisitFunctionDecl()
700 D->getNameInfo().printName(OS, Policy); in VisitFunctionDecl()
704 Proto = GuideDecl->getDeducedTemplate()->getDeclName().getAsString(); in VisitFunctionDecl()
705 if (D->isFunctionTemplateSpecialization()) { in VisitFunctionDecl()
708 const auto *TArgAsWritten = D->getTemplateSpecializationArgsAsWritten(); in VisitFunctionDecl()
710 TArgPrinter.printTemplateArguments(TArgAsWritten->arguments(), nullptr); in VisitFunctionDecl()
712 D->getTemplateSpecializationArgs()) in VisitFunctionDecl()
713 TArgPrinter.printTemplateArguments(TArgs->asArray(), nullptr); in VisitFunctionDecl()
716 QualType Ty = D->getType(); in VisitFunctionDecl()
719 Ty = PT->getInnerType(); in VisitFunctionDecl()
722 if (const FunctionType *AFT = Ty->getAs<FunctionType>()) { in VisitFunctionDecl()
724 if (D->hasWrittenPrototype()) in VisitFunctionDecl()
731 for (unsigned i = 0, e = D->getNumParams(); i != e; ++i) { in VisitFunctionDecl()
733 ParamPrinter.VisitParmVarDecl(D->getParamDecl(i)); in VisitFunctionDecl()
736 if (FT->isVariadic()) { in VisitFunctionDecl()
737 if (D->getNumParams()) POut << ", "; in VisitFunctionDecl()
739 } else if (!D->getNumParams() && !Context.getLangOpts().CPlusPlus) { in VisitFunctionDecl()
744 } else if (D->doesThisDeclarationHaveABody() && !D->hasPrototype()) { in VisitFunctionDecl()
745 for (unsigned i = 0, e = D->getNumParams(); i != e; ++i) { in VisitFunctionDecl()
748 Proto += D->getParamDecl(i)->getNameAsString(); in VisitFunctionDecl()
755 if (FT->isConst()) in VisitFunctionDecl()
757 if (FT->isVolatile()) in VisitFunctionDecl()
759 if (FT->isRestrict()) in VisitFunctionDecl()
762 switch (FT->getRefQualifier()) { in VisitFunctionDecl()
774 if (FT && FT->hasDynamicExceptionSpec()) { in VisitFunctionDecl()
776 if (FT->getExceptionSpecType() == EST_MSAny) in VisitFunctionDecl()
779 for (unsigned I = 0, N = FT->getNumExceptions(); I != N; ++I) { in VisitFunctionDecl()
783 Proto += FT->getExceptionType(I).getAsString(SubPolicy); in VisitFunctionDecl()
786 } else if (FT && isNoexceptExceptionSpec(FT->getExceptionSpecType())) { in VisitFunctionDecl()
788 if (isComputedNoexcept(FT->getExceptionSpecType())) { in VisitFunctionDecl()
791 FT->getNoexceptExpr()->printPretty(EOut, nullptr, SubPolicy, in VisitFunctionDecl()
801 } else if (!ConversionDecl && !isa<CXXDestructorDecl>(D)) { in VisitFunctionDecl()
802 if (FT && FT->hasTrailingReturn()) { in VisitFunctionDecl()
805 Out << Proto << " -> "; in VisitFunctionDecl()
810 MaybePrintTagKeywordIfSupressingScopes(Policy, AFT->getReturnType(), in VisitFunctionDecl()
812 AFT->getReturnType().print(Out, Policy, Proto); in VisitFunctionDecl()
817 if (Expr *TrailingRequiresClause = D->getTrailingRequiresClause()) { in VisitFunctionDecl()
819 TrailingRequiresClause->printPretty(Out, nullptr, SubPolicy, Indentation, in VisitFunctionDecl()
826 prettyPrintAttributes(D, AttrPosAsWritten::Right); in VisitFunctionDecl()
828 if (D->isPureVirtual()) in VisitFunctionDecl()
830 else if (D->isDeletedAsWritten()) { in VisitFunctionDecl()
832 if (const StringLiteral *M = D->getDeletedMessage()) { in VisitFunctionDecl()
834 M->outputString(Out); in VisitFunctionDecl()
837 } else if (D->isExplicitlyDefaulted()) in VisitFunctionDecl()
839 else if (D->doesThisDeclarationHaveABody()) { in VisitFunctionDecl()
841 if (!D->hasPrototype() && D->getNumParams()) { in VisitFunctionDecl()
847 for (unsigned i = 0, e = D->getNumParams(); i != e; ++i) { in VisitFunctionDecl()
849 ParamPrinter.VisitParmVarDecl(D->getParamDecl(i)); in VisitFunctionDecl()
852 Indentation -= Policy.Indentation; in VisitFunctionDecl()
855 if (D->getBody()) in VisitFunctionDecl()
856 D->getBody()->printPrettyControlled(Out, nullptr, SubPolicy, Indentation, "\n", in VisitFunctionDecl()
859 if (!Policy.TerseOutput && isa<CXXConstructorDecl>(*D)) in VisitFunctionDecl()
865 void DeclPrinter::VisitFriendDecl(FriendDecl *D) { in VisitFriendDecl() argument
866 if (TypeSourceInfo *TSI = D->getFriendType()) { in VisitFriendDecl()
867 unsigned NumTPLists = D->getFriendTypeNumTemplateParameterLists(); in VisitFriendDecl()
869 printTemplateParameters(D->getFriendTypeTemplateParameterList(i)); in VisitFriendDecl()
871 Out << " " << TSI->getType().getAsString(Policy); in VisitFriendDecl()
874 dyn_cast<FunctionDecl>(D->getFriendDecl())) { in VisitFriendDecl()
879 dyn_cast<FunctionTemplateDecl>(D->getFriendDecl())) { in VisitFriendDecl()
884 dyn_cast<ClassTemplateDecl>(D->getFriendDecl())) { in VisitFriendDecl()
890 void DeclPrinter::VisitFieldDecl(FieldDecl *D) { in VisitFieldDecl() argument
892 if (!Policy.SuppressSpecifiers && D->isMutable()) in VisitFieldDecl()
894 if (!Policy.SuppressSpecifiers && D->isModulePrivate()) in VisitFieldDecl()
897 Out << D->getASTContext().getUnqualifiedObjCPointerType(D->getType()). in VisitFieldDecl()
898 stream(Policy, D->getName(), Indentation); in VisitFieldDecl()
900 if (D->isBitField()) { in VisitFieldDecl()
902 D->getBitWidth()->printPretty(Out, nullptr, Policy, Indentation, "\n", in VisitFieldDecl()
906 Expr *Init = D->getInClassInitializer(); in VisitFieldDecl()
908 if (D->getInClassInitStyle() == ICIS_ListInit) in VisitFieldDecl()
912 Init->printPretty(Out, nullptr, Policy, Indentation, "\n", &Context); in VisitFieldDecl()
914 prettyPrintAttributes(D); in VisitFieldDecl()
917 void DeclPrinter::VisitLabelDecl(LabelDecl *D) { in VisitLabelDecl() argument
918 Out << *D << ":"; in VisitLabelDecl()
921 void DeclPrinter::VisitVarDecl(VarDecl *D) { in VisitVarDecl() argument
922 prettyPrintPragmas(D); in VisitVarDecl()
924 prettyPrintAttributes(D, AttrPosAsWritten::Left); in VisitVarDecl()
926 if (const auto *Param = dyn_cast<ParmVarDecl>(D); in VisitVarDecl()
927 Param && Param->isExplicitObjectParameter()) in VisitVarDecl()
930 QualType T = D->getTypeSourceInfo() in VisitVarDecl()
931 ? D->getTypeSourceInfo()->getType() in VisitVarDecl()
932 : D->getASTContext().getUnqualifiedObjCPointerType(D->getType()); in VisitVarDecl()
935 StorageClass SC = D->getStorageClass(); in VisitVarDecl()
939 switch (D->getTSCSpec()) { in VisitVarDecl()
953 if (D->isModulePrivate()) in VisitVarDecl()
956 if (D->isConstexpr()) { in VisitVarDecl()
966 printDeclType(T, (isa<ParmVarDecl>(D) && Policy.CleanUglifiedParameters && in VisitVarDecl()
967 D->getIdentifier()) in VisitVarDecl()
968 ? D->getIdentifier()->deuglifiedName() in VisitVarDecl()
969 : D->getName()); in VisitVarDecl()
971 prettyPrintAttributes(D, AttrPosAsWritten::Right); in VisitVarDecl()
973 Expr *Init = D->getInit(); in VisitVarDecl()
976 if (D->isCXXForRangeDecl()) { in VisitVarDecl()
980 dyn_cast<CXXConstructExpr>(Init->IgnoreImplicit())) { in VisitVarDecl()
981 if (D->getInitStyle() == VarDecl::CallInit && in VisitVarDecl()
982 !Construct->isListInitialization()) { in VisitVarDecl()
983 ImplicitInit = Construct->getNumArgs() == 0 || in VisitVarDecl()
984 Construct->getArg(0)->isDefaultArgument(); in VisitVarDecl()
988 if ((D->getInitStyle() == VarDecl::CallInit) && !isa<ParenListExpr>(Init)) in VisitVarDecl()
990 else if (D->getInitStyle() == VarDecl::CInit) { in VisitVarDecl()
996 Init->printPretty(Out, nullptr, SubPolicy, Indentation, "\n", &Context); in VisitVarDecl()
997 if ((D->getInitStyle() == VarDecl::CallInit) && !isa<ParenListExpr>(Init)) in VisitVarDecl()
1003 void DeclPrinter::VisitParmVarDecl(ParmVarDecl *D) { in VisitParmVarDecl() argument
1004 VisitVarDecl(D); in VisitParmVarDecl()
1007 void DeclPrinter::VisitFileScopeAsmDecl(FileScopeAsmDecl *D) { in VisitFileScopeAsmDecl() argument
1009 D->getAsmString()->printPretty(Out, nullptr, Policy, Indentation, "\n", in VisitFileScopeAsmDecl()
1014 void DeclPrinter::VisitTopLevelStmtDecl(TopLevelStmtDecl *D) { in VisitTopLevelStmtDecl() argument
1015 assert(D->getStmt()); in VisitTopLevelStmtDecl()
1016 D->getStmt()->printPretty(Out, nullptr, Policy, Indentation, "\n", &Context); in VisitTopLevelStmtDecl()
1019 void DeclPrinter::VisitImportDecl(ImportDecl *D) { in VisitImportDecl() argument
1020 Out << "@import " << D->getImportedModule()->getFullModuleName() in VisitImportDecl()
1024 void DeclPrinter::VisitStaticAssertDecl(StaticAssertDecl *D) { in VisitStaticAssertDecl() argument
1026 D->getAssertExpr()->printPretty(Out, nullptr, Policy, Indentation, "\n", in VisitStaticAssertDecl()
1028 if (Expr *E = D->getMessage()) { in VisitStaticAssertDecl()
1030 E->printPretty(Out, nullptr, Policy, Indentation, "\n", &Context); in VisitStaticAssertDecl()
1035 //----------------------------------------------------------------------------
1037 //----------------------------------------------------------------------------
1038 void DeclPrinter::VisitNamespaceDecl(NamespaceDecl *D) { in VisitNamespaceDecl() argument
1039 if (D->isInline()) in VisitNamespaceDecl()
1043 if (D->getDeclName()) in VisitNamespaceDecl()
1044 Out << D->getDeclName() << ' '; in VisitNamespaceDecl()
1047 VisitDeclContext(D); in VisitNamespaceDecl()
1051 void DeclPrinter::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { in VisitUsingDirectiveDecl() argument
1053 if (D->getQualifier()) in VisitUsingDirectiveDecl()
1054 D->getQualifier()->print(Out, Policy); in VisitUsingDirectiveDecl()
1055 Out << *D->getNominatedNamespaceAsWritten(); in VisitUsingDirectiveDecl()
1058 void DeclPrinter::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) { in VisitNamespaceAliasDecl() argument
1059 Out << "namespace " << *D << " = "; in VisitNamespaceAliasDecl()
1060 if (D->getQualifier()) in VisitNamespaceAliasDecl()
1061 D->getQualifier()->print(Out, Policy); in VisitNamespaceAliasDecl()
1062 Out << *D->getAliasedNamespace(); in VisitNamespaceAliasDecl()
1065 void DeclPrinter::VisitEmptyDecl(EmptyDecl *D) { in VisitEmptyDecl() argument
1066 prettyPrintAttributes(D); in VisitEmptyDecl()
1069 void DeclPrinter::VisitCXXRecordDecl(CXXRecordDecl *D) { in VisitCXXRecordDecl() argument
1071 if (!Policy.SuppressSpecifiers && D->isModulePrivate()) in VisitCXXRecordDecl()
1074 Out << D->getKindName() << ' '; in VisitCXXRecordDecl()
1078 if (prettyPrintAttributes(D, AttrPosAsWritten::Left)) in VisitCXXRecordDecl()
1081 if (D->getIdentifier()) { in VisitCXXRecordDecl()
1082 if (auto *NNS = D->getQualifier()) in VisitCXXRecordDecl()
1083 NNS->print(Out, Policy); in VisitCXXRecordDecl()
1084 Out << *D; in VisitCXXRecordDecl()
1086 if (auto *S = dyn_cast<ClassTemplateSpecializationDecl>(D)) { in VisitCXXRecordDecl()
1088 S->getSpecializedTemplate()->getTemplateParameters(); in VisitCXXRecordDecl()
1090 S->getTemplateArgsAsWritten(); in VisitCXXRecordDecl()
1092 printTemplateArguments(TArgAsWritten->arguments(), TParams); in VisitCXXRecordDecl()
1094 printTemplateArguments(S->getTemplateArgs().asArray(), TParams); in VisitCXXRecordDecl()
1098 prettyPrintAttributes(D, AttrPosAsWritten::Right); in VisitCXXRecordDecl()
1100 if (D->isCompleteDefinition()) { in VisitCXXRecordDecl()
1103 if (D->getNumBases()) { in VisitCXXRecordDecl()
1105 for (CXXRecordDecl::base_class_iterator Base = D->bases_begin(), in VisitCXXRecordDecl()
1106 BaseEnd = D->bases_end(); Base != BaseEnd; ++Base) { in VisitCXXRecordDecl()
1107 if (Base != D->bases_begin()) in VisitCXXRecordDecl()
1110 if (Base->isVirtual()) in VisitCXXRecordDecl()
1113 AccessSpecifier AS = Base->getAccessSpecifierAsWritten(); in VisitCXXRecordDecl()
1118 Out << Base->getType().getAsString(Policy); in VisitCXXRecordDecl()
1120 if (Base->isPackExpansion()) in VisitCXXRecordDecl()
1132 VisitDeclContext(D); in VisitCXXRecordDecl()
1138 void DeclPrinter::VisitLinkageSpecDecl(LinkageSpecDecl *D) { in VisitLinkageSpecDecl() argument
1140 if (D->getLanguage() == LinkageSpecLanguageIDs::C) in VisitLinkageSpecDecl()
1143 assert(D->getLanguage() == LinkageSpecLanguageIDs::CXX && in VisitLinkageSpecDecl()
1149 if (D->hasBraces()) { in VisitLinkageSpecDecl()
1151 VisitDeclContext(D); in VisitLinkageSpecDecl()
1154 Visit(*D->decls_begin()); in VisitLinkageSpecDecl()
1162 if (!Params->empty() && Params->getParam(0)->isImplicit()) in printTemplateParameters()
1171 if (Param->isImplicit()) in printTemplateParameters()
1191 if (const Expr *RequiresClause = Params->getRequiresClause()) { in printTemplateParameters()
1193 RequiresClause->printPretty(Out, nullptr, Policy, Indentation, "\n", in printTemplateParameters()
1234 void DeclPrinter::VisitTemplateDecl(const TemplateDecl *D) { in VisitTemplateDecl() argument
1235 printTemplateParameters(D->getTemplateParameters()); in VisitTemplateDecl()
1238 dyn_cast<TemplateTemplateParmDecl>(D)) { in VisitTemplateDecl()
1239 if (TTP->wasDeclaredWithTypename()) in VisitTemplateDecl()
1244 if (TTP->isParameterPack()) in VisitTemplateDecl()
1246 else if (TTP->getDeclName()) in VisitTemplateDecl()
1249 if (TTP->getDeclName()) { in VisitTemplateDecl()
1250 if (Policy.CleanUglifiedParameters && TTP->getIdentifier()) in VisitTemplateDecl()
1251 Out << TTP->getIdentifier()->deuglifiedName(); in VisitTemplateDecl()
1253 Out << TTP->getDeclName(); in VisitTemplateDecl()
1255 } else if (auto *TD = D->getTemplatedDecl()) in VisitTemplateDecl()
1257 else if (const auto *Concept = dyn_cast<ConceptDecl>(D)) { in VisitTemplateDecl()
1258 Out << "concept " << Concept->getName() << " = " ; in VisitTemplateDecl()
1259 Concept->getConstraintExpr()->printPretty(Out, nullptr, Policy, Indentation, in VisitTemplateDecl()
1264 void DeclPrinter::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { in VisitFunctionTemplateDecl() argument
1265 prettyPrintPragmas(D->getTemplatedDecl()); in VisitFunctionTemplateDecl()
1267 if (const FunctionDecl *FD = D->getTemplatedDecl()) { in VisitFunctionTemplateDecl()
1268 for (unsigned I = 0, NumTemplateParams = FD->getNumTemplateParameterLists(); in VisitFunctionTemplateDecl()
1270 printTemplateParameters(FD->getTemplateParameterList(I)); in VisitFunctionTemplateDecl()
1272 VisitRedeclarableTemplateDecl(D); in VisitFunctionTemplateDecl()
1275 if (D->getTemplatedDecl()->hasAttr<OMPDeclareTargetDeclAttr>()) in VisitFunctionTemplateDecl()
1281 !isa<CXXDeductionGuideDecl>(D->getTemplatedDecl())) { in VisitFunctionTemplateDecl()
1282 FunctionDecl *PrevDecl = D->getTemplatedDecl(); in VisitFunctionTemplateDecl()
1284 if (PrevDecl->isDefined(Def) && Def != PrevDecl) in VisitFunctionTemplateDecl()
1286 for (auto *I : D->specializations()) in VisitFunctionTemplateDecl()
1287 if (I->getTemplateSpecializationKind() == TSK_ImplicitInstantiation) { in VisitFunctionTemplateDecl()
1288 if (!PrevDecl->isThisDeclarationADefinition()) in VisitFunctionTemplateDecl()
1297 void DeclPrinter::VisitClassTemplateDecl(ClassTemplateDecl *D) { in VisitClassTemplateDecl() argument
1298 VisitRedeclarableTemplateDecl(D); in VisitClassTemplateDecl()
1301 for (auto *I : D->specializations()) in VisitClassTemplateDecl()
1302 if (I->getSpecializationKind() == TSK_ImplicitInstantiation) { in VisitClassTemplateDecl()
1303 if (D->isThisDeclarationADefinition()) in VisitClassTemplateDecl()
1313 ClassTemplateSpecializationDecl *D) { in VisitClassTemplateSpecializationDecl() argument
1315 VisitCXXRecordDecl(D); in VisitClassTemplateSpecializationDecl()
1319 ClassTemplatePartialSpecializationDecl *D) { in VisitClassTemplatePartialSpecializationDecl() argument
1320 printTemplateParameters(D->getTemplateParameters()); in VisitClassTemplatePartialSpecializationDecl()
1321 VisitCXXRecordDecl(D); in VisitClassTemplatePartialSpecializationDecl()
1324 //----------------------------------------------------------------------------
1325 // Objective-C declarations
1326 //----------------------------------------------------------------------------
1363 switch (Param->getVariance()) { in PrintObjCTypeParams()
1376 Out << Param->getDeclName(); in PrintObjCTypeParams()
1378 if (Param->hasExplicitBound()) { in PrintObjCTypeParams()
1379 Out << " : " << Param->getUnderlyingType().getAsString(Policy); in PrintObjCTypeParams()
1386 if (OMD->isInstanceMethod()) in VisitObjCMethodDecl()
1387 Out << "- "; in VisitObjCMethodDecl()
1390 if (!OMD->getReturnType().isNull()) { in VisitObjCMethodDecl()
1391 PrintObjCMethodType(OMD->getASTContext(), OMD->getObjCDeclQualifier(), in VisitObjCMethodDecl()
1392 OMD->getReturnType()); in VisitObjCMethodDecl()
1395 std::string name = OMD->getSelector().getAsString(); in VisitObjCMethodDecl()
1397 for (const auto *PI : OMD->parameters()) { in VisitObjCMethodDecl()
1402 Out << name.substr(lastPos, pos - lastPos) << ':'; in VisitObjCMethodDecl()
1403 PrintObjCMethodType(OMD->getASTContext(), in VisitObjCMethodDecl()
1404 PI->getObjCDeclQualifier(), in VisitObjCMethodDecl()
1405 PI->getType()); in VisitObjCMethodDecl()
1410 if (OMD->param_begin() == OMD->param_end()) in VisitObjCMethodDecl()
1413 if (OMD->isVariadic()) in VisitObjCMethodDecl()
1418 if (OMD->getBody() && !Policy.TerseOutput) { in VisitObjCMethodDecl()
1420 OMD->getBody()->printPretty(Out, nullptr, Policy, Indentation, "\n", in VisitObjCMethodDecl()
1428 std::string I = OID->getNameAsString(); in VisitObjCImplementationDecl()
1429 ObjCInterfaceDecl *SID = OID->getSuperClass(); in VisitObjCImplementationDecl()
1437 if (OID->ivar_size() > 0) { in VisitObjCImplementationDecl()
1441 for (const auto *I : OID->ivars()) { in VisitObjCImplementationDecl()
1442 Indent() << I->getASTContext().getUnqualifiedObjCPointerType(I->getType()). in VisitObjCImplementationDecl()
1445 Indentation -= Policy.Indentation; in VisitObjCImplementationDecl()
1448 else if (SID || (OID->decls_begin() != OID->decls_end())) { in VisitObjCImplementationDecl()
1459 std::string I = OID->getNameAsString(); in VisitObjCInterfaceDecl()
1460 ObjCInterfaceDecl *SID = OID->getSuperClass(); in VisitObjCInterfaceDecl()
1462 if (!OID->isThisDeclarationADefinition()) { in VisitObjCInterfaceDecl()
1465 if (auto TypeParams = OID->getTypeParamListAsWritten()) { in VisitObjCInterfaceDecl()
1473 if (OID->hasAttrs()) { in VisitObjCInterfaceDecl()
1480 if (auto TypeParams = OID->getTypeParamListAsWritten()) { in VisitObjCInterfaceDecl()
1485 Out << " : " << QualType(OID->getSuperClassType(), 0).getAsString(Policy); in VisitObjCInterfaceDecl()
1488 const ObjCList<ObjCProtocolDecl> &Protocols = OID->getReferencedProtocols(); in VisitObjCInterfaceDecl()
1496 if (OID->ivar_size() > 0) { in VisitObjCInterfaceDecl()
1500 for (const auto *I : OID->ivars()) { in VisitObjCInterfaceDecl()
1501 Indent() << I->getASTContext() in VisitObjCInterfaceDecl()
1502 .getUnqualifiedObjCPointerType(I->getType()) in VisitObjCInterfaceDecl()
1505 Indentation -= Policy.Indentation; in VisitObjCInterfaceDecl()
1508 else if (SID || (OID->decls_begin() != OID->decls_end())) { in VisitObjCInterfaceDecl()
1521 if (!PID->isThisDeclarationADefinition()) { in VisitObjCProtocolDecl()
1526 const ObjCList<ObjCProtocolDecl> &Protocols = PID->getReferencedProtocols(); in VisitObjCProtocolDecl()
1541 if (const auto *CID = PID->getClassInterface()) in VisitObjCCategoryImplDecl()
1544 Out << "<<error-type>>"; in VisitObjCCategoryImplDecl()
1554 if (const auto *CID = PID->getClassInterface()) in VisitObjCCategoryDecl()
1557 Out << "<<error-type>>"; in VisitObjCCategoryDecl()
1558 if (auto TypeParams = PID->getTypeParamList()) { in VisitObjCCategoryDecl()
1562 if (PID->ivar_size() > 0) { in VisitObjCCategoryDecl()
1565 for (const auto *I : PID->ivars()) in VisitObjCCategoryDecl()
1566 Indent() << I->getASTContext().getUnqualifiedObjCPointerType(I->getType()). in VisitObjCCategoryDecl()
1568 Indentation -= Policy.Indentation; in VisitObjCCategoryDecl()
1580 << ' ' << *AID->getClassInterface() << ";\n"; in VisitObjCCompatibleAliasDecl()
1583 /// PrintObjCPropertyDecl - print a property declaration.
1586 /// - class
1587 /// - nonatomic | atomic
1588 /// - assign | retain | strong | copy | weak | unsafe_unretained
1589 /// - readwrite | readonly
1590 /// - getter & setter
1591 /// - nullability
1593 if (PDecl->getPropertyImplementation() == ObjCPropertyDecl::Required) in VisitObjCPropertyDecl()
1595 else if (PDecl->getPropertyImplementation() == ObjCPropertyDecl::Optional) in VisitObjCPropertyDecl()
1598 QualType T = PDecl->getType(); in VisitObjCPropertyDecl()
1601 if (PDecl->getPropertyAttributes() != ObjCPropertyAttribute::kind_noattr) { in VisitObjCPropertyDecl()
1604 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_class) { in VisitObjCPropertyDecl()
1609 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_direct) { in VisitObjCPropertyDecl()
1614 if (PDecl->getPropertyAttributes() & in VisitObjCPropertyDecl()
1619 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_atomic) { in VisitObjCPropertyDecl()
1624 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_assign) { in VisitObjCPropertyDecl()
1628 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_retain) { in VisitObjCPropertyDecl()
1633 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_strong) { in VisitObjCPropertyDecl()
1637 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_copy) { in VisitObjCPropertyDecl()
1641 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_weak) { in VisitObjCPropertyDecl()
1645 if (PDecl->getPropertyAttributes() & in VisitObjCPropertyDecl()
1651 if (PDecl->getPropertyAttributes() & in VisitObjCPropertyDecl()
1656 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_readonly) { in VisitObjCPropertyDecl()
1661 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_getter) { in VisitObjCPropertyDecl()
1663 PDecl->getGetterName().print(Out); in VisitObjCPropertyDecl()
1666 if (PDecl->getPropertyAttributes() & ObjCPropertyAttribute::kind_setter) { in VisitObjCPropertyDecl()
1668 PDecl->getSetterName().print(Out); in VisitObjCPropertyDecl()
1672 if (PDecl->getPropertyAttributes() & in VisitObjCPropertyDecl()
1676 (PDecl->getPropertyAttributes() & in VisitObjCPropertyDecl()
1690 std::string TypeStr = PDecl->getASTContext().getUnqualifiedObjCPointerType(T). in VisitObjCPropertyDecl()
1701 if (PID->getPropertyImplementation() == ObjCPropertyImplDecl::Synthesize) in VisitObjCPropertyImplDecl()
1705 Out << *PID->getPropertyDecl(); in VisitObjCPropertyImplDecl()
1706 if (PID->getPropertyIvarDecl()) in VisitObjCPropertyImplDecl()
1707 Out << '=' << *PID->getPropertyIvarDecl(); in VisitObjCPropertyImplDecl()
1710 void DeclPrinter::VisitUsingDecl(UsingDecl *D) { in VisitUsingDecl() argument
1711 if (!D->isAccessDeclaration()) in VisitUsingDecl()
1713 if (D->hasTypename()) in VisitUsingDecl()
1715 D->getQualifier()->print(Out, Policy); in VisitUsingDecl()
1719 for (const auto *Shadow : D->shadows()) { in VisitUsingDecl()
1722 assert(Shadow->getDeclContext() == ConstructorShadow->getDeclContext()); in VisitUsingDecl()
1723 Out << *ConstructorShadow->getNominatedBaseClass(); in VisitUsingDecl()
1727 Out << *D; in VisitUsingDecl()
1730 void DeclPrinter::VisitUsingEnumDecl(UsingEnumDecl *D) { in VisitUsingEnumDecl() argument
1731 Out << "using enum " << D->getEnumDecl(); in VisitUsingEnumDecl()
1735 DeclPrinter::VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D) { in VisitUnresolvedUsingTypenameDecl() argument
1737 D->getQualifier()->print(Out, Policy); in VisitUnresolvedUsingTypenameDecl()
1738 Out << D->getDeclName(); in VisitUnresolvedUsingTypenameDecl()
1741 void DeclPrinter::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { in VisitUnresolvedUsingValueDecl() argument
1742 if (!D->isAccessDeclaration()) in VisitUnresolvedUsingValueDecl()
1744 D->getQualifier()->print(Out, Policy); in VisitUnresolvedUsingValueDecl()
1745 Out << D->getDeclName(); in VisitUnresolvedUsingValueDecl()
1748 void DeclPrinter::VisitUsingShadowDecl(UsingShadowDecl *D) { in VisitUsingShadowDecl() argument
1752 void DeclPrinter::VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D) { in VisitOMPThreadPrivateDecl() argument
1754 if (!D->varlist_empty()) { in VisitOMPThreadPrivateDecl()
1755 for (OMPThreadPrivateDecl::varlist_iterator I = D->varlist_begin(), in VisitOMPThreadPrivateDecl()
1756 E = D->varlist_end(); in VisitOMPThreadPrivateDecl()
1758 Out << (I == D->varlist_begin() ? '(' : ','); in VisitOMPThreadPrivateDecl()
1759 NamedDecl *ND = cast<DeclRefExpr>(*I)->getDecl(); in VisitOMPThreadPrivateDecl()
1760 ND->printQualifiedName(Out); in VisitOMPThreadPrivateDecl()
1766 void DeclPrinter::VisitHLSLBufferDecl(HLSLBufferDecl *D) { in VisitHLSLBufferDecl() argument
1767 if (D->isCBuffer()) in VisitHLSLBufferDecl()
1772 Out << *D; in VisitHLSLBufferDecl()
1774 prettyPrintAttributes(D); in VisitHLSLBufferDecl()
1777 VisitDeclContext(D); in VisitHLSLBufferDecl()
1781 void DeclPrinter::VisitOMPAllocateDecl(OMPAllocateDecl *D) { in VisitOMPAllocateDecl() argument
1783 if (!D->varlist_empty()) { in VisitOMPAllocateDecl()
1784 for (OMPAllocateDecl::varlist_iterator I = D->varlist_begin(), in VisitOMPAllocateDecl()
1785 E = D->varlist_end(); in VisitOMPAllocateDecl()
1787 Out << (I == D->varlist_begin() ? '(' : ','); in VisitOMPAllocateDecl()
1788 NamedDecl *ND = cast<DeclRefExpr>(*I)->getDecl(); in VisitOMPAllocateDecl()
1789 ND->printQualifiedName(Out); in VisitOMPAllocateDecl()
1793 if (!D->clauselist_empty()) { in VisitOMPAllocateDecl()
1795 for (OMPClause *C : D->clauselists()) { in VisitOMPAllocateDecl()
1802 void DeclPrinter::VisitOMPRequiresDecl(OMPRequiresDecl *D) { in VisitOMPRequiresDecl() argument
1804 if (!D->clauselist_empty()) { in VisitOMPRequiresDecl()
1806 for (auto I = D->clauselist_begin(), E = D->clauselist_end(); I != E; ++I) in VisitOMPRequiresDecl()
1811 void DeclPrinter::VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D) { in VisitOMPDeclareReductionDecl() argument
1812 if (!D->isInvalidDecl()) { in VisitOMPDeclareReductionDecl()
1814 if (D->getDeclName().getNameKind() == DeclarationName::CXXOperatorName) { in VisitOMPDeclareReductionDecl()
1816 getOperatorSpelling(D->getDeclName().getCXXOverloadedOperator()); in VisitOMPDeclareReductionDecl()
1820 assert(D->getDeclName().isIdentifier()); in VisitOMPDeclareReductionDecl()
1821 D->printName(Out, Policy); in VisitOMPDeclareReductionDecl()
1824 D->getType().print(Out, Policy); in VisitOMPDeclareReductionDecl()
1826 D->getCombiner()->printPretty(Out, nullptr, Policy, 0, "\n", &Context); in VisitOMPDeclareReductionDecl()
1828 if (auto *Init = D->getInitializer()) { in VisitOMPDeclareReductionDecl()
1830 switch (D->getInitializerKind()) { in VisitOMPDeclareReductionDecl()
1840 Init->printPretty(Out, nullptr, Policy, 0, "\n", &Context); in VisitOMPDeclareReductionDecl()
1841 if (D->getInitializerKind() == OMPDeclareReductionInitKind::Direct) in VisitOMPDeclareReductionDecl()
1848 void DeclPrinter::VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D) { in VisitOMPDeclareMapperDecl() argument
1849 if (!D->isInvalidDecl()) { in VisitOMPDeclareMapperDecl()
1851 D->printName(Out, Policy); in VisitOMPDeclareMapperDecl()
1853 D->getType().print(Out, Policy); in VisitOMPDeclareMapperDecl()
1855 Out << D->getVarName(); in VisitOMPDeclareMapperDecl()
1857 if (!D->clauselist_empty()) { in VisitOMPDeclareMapperDecl()
1859 for (auto *C : D->clauselists()) { in VisitOMPDeclareMapperDecl()
1867 void DeclPrinter::VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D) { in VisitOMPCapturedExprDecl() argument
1868 D->getInit()->printPretty(Out, nullptr, Policy, Indentation, "\n", &Context); in VisitOMPCapturedExprDecl()
1872 if (const TypeConstraint *TC = TTP->getTypeConstraint()) in VisitTemplateTypeParmDecl()
1873 TC->print(Out, Policy); in VisitTemplateTypeParmDecl()
1874 else if (TTP->wasDeclaredWithTypename()) in VisitTemplateTypeParmDecl()
1879 if (TTP->isParameterPack()) in VisitTemplateTypeParmDecl()
1881 else if (TTP->getDeclName()) in VisitTemplateTypeParmDecl()
1884 if (TTP->getDeclName()) { in VisitTemplateTypeParmDecl()
1885 if (Policy.CleanUglifiedParameters && TTP->getIdentifier()) in VisitTemplateTypeParmDecl()
1886 Out << TTP->getIdentifier()->deuglifiedName(); in VisitTemplateTypeParmDecl()
1888 Out << TTP->getDeclName(); in VisitTemplateTypeParmDecl()
1891 if (TTP->hasDefaultArgument()) { in VisitTemplateTypeParmDecl()
1893 TTP->getDefaultArgument().getArgument().print(Policy, Out, in VisitTemplateTypeParmDecl()
1901 if (IdentifierInfo *II = NTTP->getIdentifier()) in VisitNonTypeTemplateParmDecl()
1903 Policy.CleanUglifiedParameters ? II->deuglifiedName() : II->getName(); in VisitNonTypeTemplateParmDecl()
1904 printDeclType(NTTP->getType(), Name, NTTP->isParameterPack()); in VisitNonTypeTemplateParmDecl()
1906 if (NTTP->hasDefaultArgument()) { in VisitNonTypeTemplateParmDecl()
1908 NTTP->getDefaultArgument().getArgument().print(Policy, Out, in VisitNonTypeTemplateParmDecl()