[pdb] Change type visitor pattern to be dynamic.
This allows better catching of compiler errors since we can use
the override keyword to verify that methods are actually
overridden.
Also in this patch I've changed from storing a boolean Error
code everywhere to returning an llvm::Error, to propagate richer
error information up the call stack.
Reviewed By: ruiu, rnk
Differential Revision: http://reviews.llvm.org/D21410
llvm-svn: 272926
diff --git a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
index 4df324f..2ae63e0 100644
--- a/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
+++ b/llvm/tools/llvm-pdbdump/LLVMOutputStyle.cpp
@@ -328,8 +328,10 @@
for (auto &Type : Tpi->types(&HadError)) {
DictScope DD(P, "");
- if (DumpRecords)
- TD.dump(Type);
+ if (DumpRecords) {
+ if (auto EC = TD.dump(Type))
+ return EC;
+ }
if (DumpRecordBytes)
P.printBinaryBlock("Bytes", Type.Data);
@@ -347,8 +349,10 @@
TD.setPrinter(nullptr);
bool HadError = false;
- for (auto &Type : Tpi->types(&HadError))
- TD.dump(Type);
+ for (auto &Type : Tpi->types(&HadError)) {
+ if (auto EC = TD.dump(Type))
+ return EC;
+ }
TD.setPrinter(OldP);
dumpTpiHash(P, *Tpi);