Author: Bruno Ricci Date: 2020-07-02T19:29:02+01:00 New Revision: aa7fd905e4e1bc510448431da9310e8cf5197523
URL: https://github.com/llvm/llvm-project/commit/aa7fd905e4e1bc510448431da9310e8cf5197523 DIFF: https://github.com/llvm/llvm-project/commit/aa7fd905e4e1bc510448431da9310e8cf5197523.diff LOG: [clang][NFC] Store a pointer to the ASTContext in ASTDumper and TextNodeDumper In general there is no way to get to the ASTContext from most AST nodes (Decls are one of the exception). This will be a problem when implementing the rest of APValue::dump since we need the ASTContext to dump some kinds of APValues. The ASTContext* in ASTDumper and TextNodeDumper is not always non-null. This is because we still want to be able to use the various dump() functions in a debugger. No functional changes intended. Added: Modified: clang-tools-extra/clang-query/Query.cpp clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp clang/include/clang/AST/APValue.h clang/include/clang/AST/ASTDumper.h clang/include/clang/AST/ASTTypeTraits.h clang/include/clang/AST/Comment.h clang/include/clang/AST/Stmt.h clang/include/clang/AST/TextNodeDumper.h clang/include/clang/AST/Type.h clang/lib/AST/APValue.cpp clang/lib/AST/ASTDumper.cpp clang/lib/AST/ASTTypeTraits.cpp clang/lib/AST/TextNodeDumper.cpp clang/lib/ASTMatchers/ASTMatchFinder.cpp clang/lib/CodeGen/CGExprComplex.cpp clang/lib/CodeGen/CGExprScalar.cpp clang/lib/Frontend/ASTConsumers.cpp clang/unittests/AST/CommentParser.cpp clang/unittests/AST/MatchVerifier.h Removed: ################################################################################ diff --git a/clang-tools-extra/clang-query/Query.cpp b/clang-tools-extra/clang-query/Query.cpp index 2fc7af6a56e1..4fe7110daed3 100644 --- a/clang-tools-extra/clang-query/Query.cpp +++ b/clang-tools-extra/clang-query/Query.cpp @@ -157,8 +157,7 @@ bool MatchQuery::run(llvm::raw_ostream &OS, QuerySession &QS) const { OS << "Binding for \"" << BI->first << "\":\n"; const ASTContext &Ctx = AST->getASTContext(); const SourceManager &SM = Ctx.getSourceManager(); - ASTDumper Dumper(OS, &Ctx.getCommentCommandTraits(), &SM, - SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); + ASTDumper Dumper(OS, Ctx, SM.getDiagnostics().getShowColors()); Dumper.SetTraversalKind(QS.TK); Dumper.Visit(BI->second); OS << "\n"; diff --git a/clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp b/clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp index 616e100adf08..b2b883d64567 100644 --- a/clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp +++ b/clang-tools-extra/clangd/refactor/tweaks/DumpAST.cpp @@ -62,7 +62,7 @@ REGISTER_TWEAK(DumpAST) llvm::Expected<Tweak::Effect> DumpAST::apply(const Selection &Inputs) { std::string Str; llvm::raw_string_ostream OS(Str); - Node->dump(OS, Inputs.AST->getSourceManager()); + Node->dump(OS, Inputs.AST->getASTContext()); return Effect::showMessage(std::move(OS.str())); } diff --git a/clang/include/clang/AST/APValue.h b/clang/include/clang/AST/APValue.h index 63359294ef63..c69974c63c71 100644 --- a/clang/include/clang/AST/APValue.h +++ b/clang/include/clang/AST/APValue.h @@ -372,7 +372,7 @@ class APValue { bool isAddrLabelDiff() const { return Kind == AddrLabelDiff; } void dump() const; - void dump(raw_ostream &OS) const; + void dump(raw_ostream &OS, const ASTContext *Context) const; void printPretty(raw_ostream &OS, const ASTContext &Ctx, QualType Ty) const; std::string getAsString(const ASTContext &Ctx, QualType Ty) const; diff --git a/clang/include/clang/AST/ASTDumper.h b/clang/include/clang/AST/ASTDumper.h index f46ffb960db6..a154bc2db3a7 100644 --- a/clang/include/clang/AST/ASTDumper.h +++ b/clang/include/clang/AST/ASTDumper.h @@ -24,18 +24,11 @@ class ASTDumper : public ASTNodeTraverser<ASTDumper, TextNodeDumper> { const bool ShowColors; public: - ASTDumper(raw_ostream &OS, const comments::CommandTraits *Traits, - const SourceManager *SM) - : ASTDumper(OS, Traits, SM, SM && SM->getDiagnostics().getShowColors()) {} - - ASTDumper(raw_ostream &OS, const comments::CommandTraits *Traits, - const SourceManager *SM, bool ShowColors) - : ASTDumper(OS, Traits, SM, ShowColors, LangOptions()) {} - ASTDumper(raw_ostream &OS, const comments::CommandTraits *Traits, - const SourceManager *SM, bool ShowColors, - const PrintingPolicy &PrintPolicy) - : NodeDumper(OS, ShowColors, SM, PrintPolicy, Traits), OS(OS), - ShowColors(ShowColors) {} + ASTDumper(raw_ostream &OS, const ASTContext &Context, bool ShowColors) + : NodeDumper(OS, Context, ShowColors), OS(OS), ShowColors(ShowColors) {} + + ASTDumper(raw_ostream &OS, bool ShowColors) + : NodeDumper(OS, ShowColors), OS(OS), ShowColors(ShowColors) {} TextNodeDumper &doGetNodeDelegate() { return NodeDumper; } diff --git a/clang/include/clang/AST/ASTTypeTraits.h b/clang/include/clang/AST/ASTTypeTraits.h index 67fa4ab1b6a4..328b7bce6ba5 100644 --- a/clang/include/clang/AST/ASTTypeTraits.h +++ b/clang/include/clang/AST/ASTTypeTraits.h @@ -278,7 +278,7 @@ class DynTypedNode { void print(llvm::raw_ostream &OS, const PrintingPolicy &PP) const; /// Dumps the node to the given output stream. - void dump(llvm::raw_ostream &OS, SourceManager &SM) const; + void dump(llvm::raw_ostream &OS, const ASTContext &Context) const; /// For nodes which represent textual entities in the source code, /// return their SourceRange. For all other nodes, return SourceRange(). diff --git a/clang/include/clang/AST/Comment.h b/clang/include/clang/AST/Comment.h index cd9c1ce2bce0..54a4b0a9cfe6 100644 --- a/clang/include/clang/AST/Comment.h +++ b/clang/include/clang/AST/Comment.h @@ -209,9 +209,7 @@ class Comment { void dump() const; void dumpColor() const; - void dump(const ASTContext &Context) const; - void dump(raw_ostream &OS, const CommandTraits *Traits, - const SourceManager *SM) const; + void dump(raw_ostream &OS, const ASTContext &Context) const; SourceRange getSourceRange() const LLVM_READONLY { return Range; } diff --git a/clang/include/clang/AST/Stmt.h b/clang/include/clang/AST/Stmt.h index 6c3f036d45ca..01d4301922f8 100644 --- a/clang/include/clang/AST/Stmt.h +++ b/clang/include/clang/AST/Stmt.h @@ -1166,9 +1166,7 @@ class alignas(void *) Stmt { /// Dumps the specified AST fragment and all subtrees to /// \c llvm::errs(). void dump() const; - void dump(SourceManager &SM) const; - void dump(raw_ostream &OS, SourceManager &SM) const; - void dump(raw_ostream &OS) const; + void dump(raw_ostream &OS, const ASTContext &Context) const; /// \return Unique reproducible object identifier int64_t getID(const ASTContext &Context) const; diff --git a/clang/include/clang/AST/TextNodeDumper.h b/clang/include/clang/AST/TextNodeDumper.h index b069bd09287a..d2ec153ce67c 100644 --- a/clang/include/clang/AST/TextNodeDumper.h +++ b/clang/include/clang/AST/TextNodeDumper.h @@ -139,19 +139,23 @@ class TextNodeDumper const char *LastLocFilename = ""; unsigned LastLocLine = ~0U; - const SourceManager *SM; + /// \p Context, \p SM, and \p Traits can be null. This is because we want + /// to be able to call \p dump() in a debugger without having to pass the + /// \p ASTContext to \p dump. Not all parts of the AST dump output will be + /// available without the \p ASTContext. + const ASTContext *Context = nullptr; + const SourceManager *SM = nullptr; /// The policy to use for printing; can be defaulted. - PrintingPolicy PrintPolicy; + PrintingPolicy PrintPolicy = LangOptions(); - const comments::CommandTraits *Traits; + const comments::CommandTraits *Traits = nullptr; const char *getCommandName(unsigned CommandID); public: - TextNodeDumper(raw_ostream &OS, bool ShowColors, const SourceManager *SM, - const PrintingPolicy &PrintPolicy, - const comments::CommandTraits *Traits); + TextNodeDumper(raw_ostream &OS, const ASTContext &Context, bool ShowColors); + TextNodeDumper(raw_ostream &OS, bool ShowColors); void Visit(const comments::Comment *C, const comments::FullComment *FC); diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index 10b8b41efeeb..0fc50e0e799f 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -1058,7 +1058,7 @@ class QualType { void dump(const char *s) const; void dump() const; - void dump(llvm::raw_ostream &OS) const; + void dump(llvm::raw_ostream &OS, const ASTContext &Context) const; void Profile(llvm::FoldingSetNodeID &ID) const { ID.AddPointer(getAsOpaquePtr()); @@ -2471,7 +2471,7 @@ class alignas(8) Type : public ExtQualsTypeCommonBase { CanQualType getCanonicalTypeUnqualified() const; // in CanonicalType.h void dump() const; - void dump(llvm::raw_ostream &OS) const; + void dump(llvm::raw_ostream &OS, const ASTContext &Context) const; }; /// This will check for a TypedefType by removing any existing sugar diff --git a/clang/lib/AST/APValue.cpp b/clang/lib/AST/APValue.cpp index 50f8d05dacb4..417916241d79 100644 --- a/clang/lib/AST/APValue.cpp +++ b/clang/lib/AST/APValue.cpp @@ -378,11 +378,6 @@ void APValue::swap(APValue &RHS) { memcpy(RHS.Data.buffer, TmpData, DataSize); } -LLVM_DUMP_METHOD void APValue::dump() const { - dump(llvm::errs()); - llvm::errs() << '\n'; -} - static double GetApproxValue(const llvm::APFloat &F) { llvm::APFloat V = F; bool ignored; @@ -391,7 +386,13 @@ static double GetApproxValue(const llvm::APFloat &F) { return V.convertToDouble(); } -void APValue::dump(raw_ostream &OS) const { +LLVM_DUMP_METHOD void APValue::dump() const { + dump(llvm::errs(), /*Context=*/nullptr); + llvm::errs() << '\n'; +} + +LLVM_DUMP_METHOD void APValue::dump(raw_ostream &OS, + const ASTContext *Context) const { switch (getKind()) { case None: OS << "None"; @@ -410,10 +411,10 @@ void APValue::dump(raw_ostream &OS) const { return; case Vector: OS << "Vector: "; - getVectorElt(0).dump(OS); + getVectorElt(0).dump(OS, Context); for (unsigned i = 1; i != getVectorLength(); ++i) { OS << ", "; - getVectorElt(i).dump(OS); + getVectorElt(i).dump(OS, Context); } return; case ComplexInt: @@ -429,36 +430,37 @@ void APValue::dump(raw_ostream &OS) const { case Array: OS << "Array: "; for (unsigned I = 0, N = getArrayInitializedElts(); I != N; ++I) { - getArrayInitializedElt(I).dump(OS); - if (I != getArraySize() - 1) OS << ", "; + getArrayInitializedElt(I).dump(OS, Context); + if (I != getArraySize() - 1) + OS << ", "; } if (hasArrayFiller()) { OS << getArraySize() - getArrayInitializedElts() << " x "; - getArrayFiller().dump(OS); + getArrayFiller().dump(OS, Context); } return; case Struct: OS << "Struct "; if (unsigned N = getStructNumBases()) { OS << " bases: "; - getStructBase(0).dump(OS); + getStructBase(0).dump(OS, Context); for (unsigned I = 1; I != N; ++I) { OS << ", "; - getStructBase(I).dump(OS); + getStructBase(I).dump(OS, Context); } } if (unsigned N = getStructNumFields()) { OS << " fields: "; - getStructField(0).dump(OS); + getStructField(0).dump(OS, Context); for (unsigned I = 1; I != N; ++I) { OS << ", "; - getStructField(I).dump(OS); + getStructField(I).dump(OS, Context); } } return; case Union: OS << "Union: "; - getUnionValue().dump(OS); + getUnionValue().dump(OS, Context); return; case MemberPointer: OS << "MemberPointer: <todo>"; diff --git a/clang/lib/AST/ASTDumper.cpp b/clang/lib/AST/ASTDumper.cpp index d7a25cc827aa..08a6d0cbd261 100644 --- a/clang/lib/AST/ASTDumper.cpp +++ b/clang/lib/AST/ASTDumper.cpp @@ -159,17 +159,22 @@ void QualType::dump(const char *msg) const { dump(); } -LLVM_DUMP_METHOD void QualType::dump() const { dump(llvm::errs()); } +LLVM_DUMP_METHOD void QualType::dump() const { + ASTDumper Dumper(llvm::errs(), /*ShowColors=*/false); + Dumper.Visit(*this); +} -LLVM_DUMP_METHOD void QualType::dump(llvm::raw_ostream &OS) const { - ASTDumper Dumper(OS, nullptr, nullptr); +LLVM_DUMP_METHOD void QualType::dump(llvm::raw_ostream &OS, + const ASTContext &Context) const { + ASTDumper Dumper(OS, Context, Context.getDiagnostics().getShowColors()); Dumper.Visit(*this); } -LLVM_DUMP_METHOD void Type::dump() const { dump(llvm::errs()); } +LLVM_DUMP_METHOD void Type::dump() const { QualType(this, 0).dump(); } -LLVM_DUMP_METHOD void Type::dump(llvm::raw_ostream &OS) const { - QualType(this, 0).dump(OS); +LLVM_DUMP_METHOD void Type::dump(llvm::raw_ostream &OS, + const ASTContext &Context) const { + QualType(this, 0).dump(OS, Context); } //===----------------------------------------------------------------------===// @@ -189,8 +194,7 @@ LLVM_DUMP_METHOD void Decl::dump(raw_ostream &OS, bool Deserialize, (void)Deserialize; // FIXME? P.Visit(this); } else { - ASTDumper P(OS, &Ctx.getCommentCommandTraits(), &SM, - SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); + ASTDumper P(OS, Ctx, Ctx.getDiagnostics().getShowColors()); P.setDeserialize(Deserialize); P.Visit(this); } @@ -198,9 +202,7 @@ LLVM_DUMP_METHOD void Decl::dump(raw_ostream &OS, bool Deserialize, LLVM_DUMP_METHOD void Decl::dumpColor() const { const ASTContext &Ctx = getASTContext(); - ASTDumper P(llvm::errs(), &Ctx.getCommentCommandTraits(), - &Ctx.getSourceManager(), /*ShowColors*/ true, - Ctx.getPrintingPolicy()); + ASTDumper P(llvm::errs(), Ctx, /*ShowColors=*/true); P.Visit(this); } @@ -214,10 +216,8 @@ LLVM_DUMP_METHOD void DeclContext::dumpLookups(raw_ostream &OS, const DeclContext *DC = this; while (!DC->isTranslationUnit()) DC = DC->getParent(); - ASTContext &Ctx = cast<TranslationUnitDecl>(DC)->getASTContext(); - const SourceManager &SM = Ctx.getSourceManager(); - ASTDumper P(OS, &Ctx.getCommentCommandTraits(), &Ctx.getSourceManager(), - SM.getDiagnostics().getShowColors(), Ctx.getPrintingPolicy()); + const ASTContext &Ctx = cast<TranslationUnitDecl>(DC)->getASTContext(); + ASTDumper P(OS, Ctx, Ctx.getDiagnostics().getShowColors()); P.setDeserialize(Deserialize); P.dumpLookups(this, DumpDecls); } @@ -226,27 +226,19 @@ LLVM_DUMP_METHOD void DeclContext::dumpLookups(raw_ostream &OS, // Stmt method implementations //===----------------------------------------------------------------------===// -LLVM_DUMP_METHOD void Stmt::dump(SourceManager &SM) const { - dump(llvm::errs(), SM); -} - -LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS, SourceManager &SM) const { - ASTDumper P(OS, nullptr, &SM); - P.Visit(this); -} - -LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS) const { - ASTDumper P(OS, nullptr, nullptr); +LLVM_DUMP_METHOD void Stmt::dump() const { + ASTDumper P(llvm::errs(), /*ShowColors=*/false); P.Visit(this); } -LLVM_DUMP_METHOD void Stmt::dump() const { - ASTDumper P(llvm::errs(), nullptr, nullptr); +LLVM_DUMP_METHOD void Stmt::dump(raw_ostream &OS, + const ASTContext &Context) const { + ASTDumper P(OS, Context, Context.getDiagnostics().getShowColors()); P.Visit(this); } LLVM_DUMP_METHOD void Stmt::dumpColor() const { - ASTDumper P(llvm::errs(), nullptr, nullptr, /*ShowColors*/true); + ASTDumper P(llvm::errs(), /*ShowColors=*/true); P.Visit(this); } @@ -255,27 +247,26 @@ LLVM_DUMP_METHOD void Stmt::dumpColor() const { //===----------------------------------------------------------------------===// LLVM_DUMP_METHOD void Comment::dump() const { - dump(llvm::errs(), nullptr, nullptr); -} - -LLVM_DUMP_METHOD void Comment::dump(const ASTContext &Context) const { - dump(llvm::errs(), &Context.getCommentCommandTraits(), - &Context.getSourceManager()); + const auto *FC = dyn_cast<FullComment>(this); + if (!FC) + return; + ASTDumper Dumper(llvm::errs(), /*ShowColors=*/false); + Dumper.Visit(FC, FC); } -void Comment::dump(raw_ostream &OS, const CommandTraits *Traits, - const SourceManager *SM) const { - const FullComment *FC = dyn_cast<FullComment>(this); +LLVM_DUMP_METHOD void Comment::dump(raw_ostream &OS, + const ASTContext &Context) const { + const auto *FC = dyn_cast<FullComment>(this); if (!FC) return; - ASTDumper D(OS, Traits, SM); - D.Visit(FC, FC); + ASTDumper Dumper(OS, Context, Context.getDiagnostics().getShowColors()); + Dumper.Visit(FC, FC); } LLVM_DUMP_METHOD void Comment::dumpColor() const { - const FullComment *FC = dyn_cast<FullComment>(this); + const auto *FC = dyn_cast<FullComment>(this); if (!FC) return; - ASTDumper D(llvm::errs(), nullptr, nullptr, /*ShowColors*/true); - D.Visit(FC, FC); + ASTDumper Dumper(llvm::errs(), /*ShowColors=*/true); + Dumper.Visit(FC, FC); } diff --git a/clang/lib/AST/ASTTypeTraits.cpp b/clang/lib/AST/ASTTypeTraits.cpp index ccfc11565885..34fc587694be 100644 --- a/clang/lib/AST/ASTTypeTraits.cpp +++ b/clang/lib/AST/ASTTypeTraits.cpp @@ -152,13 +152,14 @@ void DynTypedNode::print(llvm::raw_ostream &OS, OS << "Unable to print values of type " << NodeKind.asStringRef() << "\n"; } -void DynTypedNode::dump(llvm::raw_ostream &OS, SourceManager &SM) const { +void DynTypedNode::dump(llvm::raw_ostream &OS, + const ASTContext &Context) const { if (const Decl *D = get<Decl>()) D->dump(OS); else if (const Stmt *S = get<Stmt>()) - S->dump(OS, SM); + S->dump(OS, Context); else if (const Type *T = get<Type>()) - T->dump(OS); + T->dump(OS, Context); else OS << "Unable to dump values of type " << NodeKind.asStringRef() << "\n"; } diff --git a/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index 0d49c443e03e..74966f804fe3 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/lib/AST/TextNodeDumper.cpp @@ -51,12 +51,15 @@ static void dumpPreviousDecl(raw_ostream &OS, const Decl *D) { llvm_unreachable("Decl that isn't part of DeclNodes.inc!"); } -TextNodeDumper::TextNodeDumper(raw_ostream &OS, bool ShowColors, - const SourceManager *SM, - const PrintingPolicy &PrintPolicy, - const comments::CommandTraits *Traits) - : TextTreeStructure(OS, ShowColors), OS(OS), ShowColors(ShowColors), SM(SM), - PrintPolicy(PrintPolicy), Traits(Traits) {} +TextNodeDumper::TextNodeDumper(raw_ostream &OS, const ASTContext &Context, + bool ShowColors) + : TextTreeStructure(OS, ShowColors), OS(OS), ShowColors(ShowColors), + Context(&Context), SM(&Context.getSourceManager()), + PrintPolicy(Context.getPrintingPolicy()), + Traits(&Context.getCommentCommandTraits()) {} + +TextNodeDumper::TextNodeDumper(raw_ostream &OS, bool ShowColors) + : TextTreeStructure(OS, ShowColors), OS(OS), ShowColors(ShowColors) {} void TextNodeDumper::Visit(const comments::Comment *C, const comments::FullComment *FC) { @@ -712,7 +715,7 @@ void TextNodeDumper::VisitConstantExpr(const ConstantExpr *Node) { if (Node->getResultAPValueKind() != APValue::None) { ColorScope Color(OS, ShowColors, ValueColor); OS << " "; - Node->getAPValueResult().dump(OS); + Node->getAPValueResult().dump(OS, Context); } } diff --git a/clang/lib/ASTMatchers/ASTMatchFinder.cpp b/clang/lib/ASTMatchers/ASTMatchFinder.cpp index 563f3fc9a634..e88da16dd3d4 100644 --- a/clang/lib/ASTMatchers/ASTMatchFinder.cpp +++ b/clang/lib/ASTMatchers/ASTMatchFinder.cpp @@ -755,7 +755,7 @@ class MatchASTVisitor : public RecursiveASTVisitor<MatchASTVisitor>, return D->getKind() == Decl::TranslationUnit; })) { llvm::errs() << "Tried to match orphan node:\n"; - Node.dump(llvm::errs(), ActiveASTContext->getSourceManager()); + Node.dump(llvm::errs(), *ActiveASTContext); llvm_unreachable("Parent map should be complete!"); } #endif diff --git a/clang/lib/CodeGen/CGExprComplex.cpp b/clang/lib/CodeGen/CGExprComplex.cpp index 13a571352137..a49817898ae3 100644 --- a/clang/lib/CodeGen/CGExprComplex.cpp +++ b/clang/lib/CodeGen/CGExprComplex.cpp @@ -98,7 +98,7 @@ class ComplexExprEmitter } ComplexPairTy VisitStmt(Stmt *S) { - S->dump(CGF.getContext().getSourceManager()); + S->dump(llvm::errs(), CGF.getContext()); llvm_unreachable("Stmt can't have complex result type!"); } ComplexPairTy VisitExpr(Expr *S); diff --git a/clang/lib/CodeGen/CGExprScalar.cpp b/clang/lib/CodeGen/CGExprScalar.cpp index 922aa95150ce..6131f97995dc 100644 --- a/clang/lib/CodeGen/CGExprScalar.cpp +++ b/clang/lib/CodeGen/CGExprScalar.cpp @@ -413,7 +413,7 @@ class ScalarExprEmitter } Value *VisitStmt(Stmt *S) { - S->dump(CGF.getContext().getSourceManager()); + S->dump(llvm::errs(), CGF.getContext()); llvm_unreachable("Stmt can't have complex result type!"); } Value *VisitExpr(Expr *S); diff --git a/clang/lib/Frontend/ASTConsumers.cpp b/clang/lib/Frontend/ASTConsumers.cpp index 12fda45d0ef0..a73cc8876d5d 100644 --- a/clang/lib/Frontend/ASTConsumers.cpp +++ b/clang/lib/Frontend/ASTConsumers.cpp @@ -103,9 +103,9 @@ namespace { // FIXME: Support OutputFormat in type dumping. // FIXME: Support combining -ast-dump-decl-types with -ast-dump-lookups. if (auto *VD = dyn_cast<ValueDecl>(InnerD)) - VD->getType().dump(Out); + VD->getType().dump(Out, VD->getASTContext()); if (auto *TD = dyn_cast<TypeDecl>(InnerD)) - TD->getTypeForDecl()->dump(Out); + TD->getTypeForDecl()->dump(Out, TD->getASTContext()); } } diff --git a/clang/unittests/AST/CommentParser.cpp b/clang/unittests/AST/CommentParser.cpp index 327cabd619bd..ba8b34ebcd38 100644 --- a/clang/unittests/AST/CommentParser.cpp +++ b/clang/unittests/AST/CommentParser.cpp @@ -64,7 +64,7 @@ FullComment *CommentParserTest::parseString(const char *Source) { if (MY_DEBUG) { llvm::errs() << "=== Source:\n" << Source << "\n=== AST:\n"; - FC->dump(llvm::errs(), &Traits, &SourceMgr); + FC->dump(); } Token Tok; diff --git a/clang/unittests/AST/MatchVerifier.h b/clang/unittests/AST/MatchVerifier.h index 3fb22ef00f98..217c1abcff69 100644 --- a/clang/unittests/AST/MatchVerifier.h +++ b/clang/unittests/AST/MatchVerifier.h @@ -271,7 +271,7 @@ class DumpVerifier : public MatchVerifier<DynTypedNode> { const DynTypedNode &Node) override { std::string DumpStr; llvm::raw_string_ostream Dump(DumpStr); - Node.dump(Dump, *Result.SourceManager); + Node.dump(Dump, *Result.Context); if (Dump.str().find(ExpectSubstring) == std::string::npos) { std::string MsgStr; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits