diff options
author | Chris Lattner <sabre@nondot.org> | 2008-11-23 09:21:17 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-11-23 09:21:17 +0000 |
commit | 63ecc509e3d5b382e83896d112f7e17025fa60c2 (patch) | |
tree | a624c851b68ca3710cdd7e807811bf1c194e8055 /clang/lib | |
parent | 6a2ed6f6dcd63ef05bc094195a646f44e6a2a029 (diff) | |
download | bcm5719-llvm-63ecc509e3d5b382e83896d112f7e17025fa60c2.tar.gz bcm5719-llvm-63ecc509e3d5b382e83896d112f7e17025fa60c2.zip |
Genericize the qualtype formating callback to support any diag argument.
No functionality change.
llvm-svn: 59908
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Basic/Diagnostic.cpp | 17 | ||||
-rw-r--r-- | clang/lib/Sema/Sema.cpp | 7 |
2 files changed, 13 insertions, 11 deletions
diff --git a/clang/lib/Basic/Diagnostic.cpp b/clang/lib/Basic/Diagnostic.cpp index 8a897f57669..fd65f75e085 100644 --- a/clang/lib/Basic/Diagnostic.cpp +++ b/clang/lib/Basic/Diagnostic.cpp @@ -116,10 +116,11 @@ namespace clang { // Common Diagnostic implementation //===----------------------------------------------------------------------===// -static void DummyQTToStringFnTy(intptr_t QT, const char *Modifier, unsigned ML, - const char *Argument, unsigned ArgLen, - llvm::SmallVectorImpl<char> &Output) { - const char *Str = "<can't format QualType>"; +static void DummyArgToStringFn(Diagnostic::ArgumentKind AK, intptr_t QT, + const char *Modifier, unsigned ML, + const char *Argument, unsigned ArgLen, + llvm::SmallVectorImpl<char> &Output) { + const char *Str = "<can't format argument>"; Output.append(Str, Str+strlen(Str)); } @@ -139,7 +140,7 @@ Diagnostic::Diagnostic(DiagnosticClient *client) : Client(client) { CustomDiagInfo = 0; CurDiagID = ~0U; - QualTypeToString = DummyQTToStringFnTy; + ArgToStringFn = DummyArgToStringFn; } Diagnostic::~Diagnostic() { @@ -536,9 +537,9 @@ FormatDiagnostic(llvm::SmallVectorImpl<char> &OutStr) const { } case Diagnostic::ak_qualtype: OutStr.push_back('\''); - getDiags()->ConvertQualTypeToString(getRawArg(ArgNo), - Modifier, ModifierLen, - Argument, ArgumentLen, OutStr); + getDiags()->ConvertArgToString(getArgKind(ArgNo), getRawArg(ArgNo), + Modifier, ModifierLen, + Argument, ArgumentLen, OutStr); OutStr.push_back('\''); break; } diff --git a/clang/lib/Sema/Sema.cpp b/clang/lib/Sema/Sema.cpp index d43eadd5744..b01b5d77f3c 100644 --- a/clang/lib/Sema/Sema.cpp +++ b/clang/lib/Sema/Sema.cpp @@ -22,12 +22,13 @@ using namespace clang; /// ConvertQualTypeToStringFn - This function is used to pretty print the /// specified QualType as a string in diagnostics. -static void ConvertQualTypeToStringFn(intptr_t QT, +static void ConvertArgToStringFn(Diagnostic::ArgumentKind Kind, intptr_t QT, const char *Modifier, unsigned ML, const char *Argument, unsigned ArgLen, llvm::SmallVectorImpl<char> &Output) { assert(ML == 0 && ArgLen == 0 && "Invalid modifier for QualType argument"); - + assert(Kind == Diagnostic::ak_qualtype); + QualType Ty(QualType::getFromOpaquePtr(reinterpret_cast<void*>(QT))); // FIXME: Playing with std::string is really slow. @@ -126,7 +127,7 @@ Sema::Sema(Preprocessor &pp, ASTContext &ctxt, ASTConsumer &consumer) FieldCollector.reset(new CXXFieldCollector()); // Tell diagnostics how to render things from the AST library. - PP.getDiagnostics().SetQualTypeToStringFn(ConvertQualTypeToStringFn); + PP.getDiagnostics().SetArgToStringFn(ConvertArgToStringFn); } /// ImpCastExprToType - If Expr is not of type 'Type', insert an implicit cast. |