From: John McCall Date: Thu, 5 Aug 2010 04:58:04 +0000 (+0000) Subject: operator<< on a DiagnosticBuilder should *always* output exactly one thing. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67c4a0ca65dd72784a1778264938c8ba45506cea;p=clang operator<< on a DiagnosticBuilder should *always* output exactly one thing. Null template arguments are bad, but they're better than crashing with an argument mismatch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110312 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/TemplateBase.cpp b/lib/AST/TemplateBase.cpp index 02e648879a..351aebe3f8 100644 --- a/lib/AST/TemplateBase.cpp +++ b/lib/AST/TemplateBase.cpp @@ -152,7 +152,9 @@ const DiagnosticBuilder &clang::operator<<(const DiagnosticBuilder &DB, const TemplateArgument &Arg) { switch (Arg.getKind()) { case TemplateArgument::Null: - return DB; + // This is bad, but not as bad as crashing because of argument + // count mismatches. + return DB << "(null template argument)"; case TemplateArgument::Type: return DB << Arg.getAsType();