summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2008-11-23 09:21:17 +0000
committerChris Lattner <sabre@nondot.org>2008-11-23 09:21:17 +0000
commit63ecc509e3d5b382e83896d112f7e17025fa60c2 (patch)
treea624c851b68ca3710cdd7e807811bf1c194e8055 /clang/lib
parent6a2ed6f6dcd63ef05bc094195a646f44e6a2a029 (diff)
downloadbcm5719-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.cpp17
-rw-r--r--clang/lib/Sema/Sema.cpp7
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.
OpenPOWER on IntegriCloud