diff options
Diffstat (limited to 'clang/lib/Sema/Sema.h')
-rw-r--r-- | clang/lib/Sema/Sema.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h index 1acd6b2a85c..c662301da34 100644 --- a/clang/lib/Sema/Sema.h +++ b/clang/lib/Sema/Sema.h @@ -242,7 +242,10 @@ public: /// The primitive diagnostic helpers. DiagnosticBuilder Diag(SourceLocation Loc, unsigned DiagID) { - return Diags.Report(FullSourceLoc(Loc, SourceMgr), DiagID); + DiagnosticBuilder DB = Diags.Report(FullSourceLoc(Loc, SourceMgr), DiagID); + if (!Diags.isBuiltinNote(DiagID) && !ActiveTemplateInstantiations.empty()) + DB << PostDiagnosticHook(PrintInstantiationStackHook, this); + return DB; } virtual void DeleteExpr(ExprTy *E); @@ -1719,6 +1722,9 @@ public: operator=(const InstantiatingTemplate&); // not implemented }; + static void PrintInstantiationStackHook(unsigned DiagID, void *Cookie); + void PrintInstantiationStack(); + QualType InstantiateType(QualType T, const TemplateArgument *TemplateArgs, unsigned NumTemplateArgs, SourceLocation Loc, DeclarationName Entity); |