mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Merge pull request #27950 from brentdax/dumpster-fire
[NFC] Standardize dump() methods in frontend
This commit is contained in:
@@ -842,89 +842,93 @@ static void printStoredEntry(const SwiftLookupTable *table, uint64_t entry,
|
||||
}
|
||||
|
||||
void SwiftLookupTable::dump() const {
|
||||
dump(llvm::errs());
|
||||
}
|
||||
|
||||
void SwiftLookupTable::dump(raw_ostream &os) const {
|
||||
// Dump the base name -> full table entry mappings.
|
||||
SmallVector<SerializedSwiftName, 4> baseNames;
|
||||
for (const auto &entry : LookupTable) {
|
||||
baseNames.push_back(entry.first);
|
||||
}
|
||||
llvm::array_pod_sort(baseNames.begin(), baseNames.end());
|
||||
llvm::errs() << "Base name -> entry mappings:\n";
|
||||
os << "Base name -> entry mappings:\n";
|
||||
for (auto baseName : baseNames) {
|
||||
switch (baseName.Kind) {
|
||||
case DeclBaseName::Kind::Normal:
|
||||
llvm::errs() << " " << baseName.Name << ":\n";
|
||||
os << " " << baseName.Name << ":\n";
|
||||
break;
|
||||
case DeclBaseName::Kind::Subscript:
|
||||
llvm::errs() << " subscript:\n";
|
||||
os << " subscript:\n";
|
||||
break;
|
||||
case DeclBaseName::Kind::Constructor:
|
||||
llvm::errs() << " init:\n";
|
||||
os << " init:\n";
|
||||
break;
|
||||
case DeclBaseName::Kind::Destructor:
|
||||
llvm::errs() << " deinit:\n";
|
||||
os << " deinit:\n";
|
||||
break;
|
||||
}
|
||||
const auto &entries = LookupTable.find(baseName)->second;
|
||||
for (const auto &entry : entries) {
|
||||
llvm::errs() << " ";
|
||||
printStoredContext(entry.Context, llvm::errs());
|
||||
llvm::errs() << ": ";
|
||||
os << " ";
|
||||
printStoredContext(entry.Context, os);
|
||||
os << ": ";
|
||||
|
||||
interleave(entry.DeclsOrMacros.begin(), entry.DeclsOrMacros.end(),
|
||||
[this](uint64_t entry) {
|
||||
printStoredEntry(this, entry, llvm::errs());
|
||||
[this, &os](uint64_t entry) {
|
||||
printStoredEntry(this, entry, os);
|
||||
},
|
||||
[] {
|
||||
llvm::errs() << ", ";
|
||||
[&os] {
|
||||
os << ", ";
|
||||
});
|
||||
llvm::errs() << "\n";
|
||||
os << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (!Categories.empty()) {
|
||||
llvm::errs() << "Categories: ";
|
||||
os << "Categories: ";
|
||||
interleave(Categories.begin(), Categories.end(),
|
||||
[](clang::ObjCCategoryDecl *category) {
|
||||
llvm::errs() << category->getClassInterface()->getName()
|
||||
<< "(" << category->getName() << ")";
|
||||
[&os](clang::ObjCCategoryDecl *category) {
|
||||
os << category->getClassInterface()->getName()
|
||||
<< "(" << category->getName() << ")";
|
||||
},
|
||||
[] {
|
||||
llvm::errs() << ", ";
|
||||
[&os] {
|
||||
os << ", ";
|
||||
});
|
||||
llvm::errs() << "\n";
|
||||
os << "\n";
|
||||
} else if (Reader && !Reader->categories().empty()) {
|
||||
llvm::errs() << "Categories: ";
|
||||
os << "Categories: ";
|
||||
interleave(Reader->categories().begin(), Reader->categories().end(),
|
||||
[](clang::serialization::DeclID declID) {
|
||||
llvm::errs() << "decl ID #" << declID;
|
||||
[&os](clang::serialization::DeclID declID) {
|
||||
os << "decl ID #" << declID;
|
||||
},
|
||||
[] {
|
||||
llvm::errs() << ", ";
|
||||
[&os] {
|
||||
os << ", ";
|
||||
});
|
||||
llvm::errs() << "\n";
|
||||
os << "\n";
|
||||
}
|
||||
|
||||
if (!GlobalsAsMembers.empty()) {
|
||||
llvm::errs() << "Globals-as-members mapping:\n";
|
||||
os << "Globals-as-members mapping:\n";
|
||||
SmallVector<StoredContext, 4> contexts;
|
||||
for (const auto &entry : GlobalsAsMembers) {
|
||||
contexts.push_back(entry.first);
|
||||
}
|
||||
llvm::array_pod_sort(contexts.begin(), contexts.end());
|
||||
for (auto context : contexts) {
|
||||
llvm::errs() << " ";
|
||||
printStoredContext(context, llvm::errs());
|
||||
llvm::errs() << ": ";
|
||||
os << " ";
|
||||
printStoredContext(context, os);
|
||||
os << ": ";
|
||||
|
||||
const auto &entries = GlobalsAsMembers.find(context)->second;
|
||||
interleave(entries.begin(), entries.end(),
|
||||
[this](uint64_t entry) {
|
||||
printStoredEntry(this, entry, llvm::errs());
|
||||
[this, &os](uint64_t entry) {
|
||||
printStoredEntry(this, entry, os);
|
||||
},
|
||||
[] {
|
||||
llvm::errs() << ", ";
|
||||
[&os] {
|
||||
os << ", ";
|
||||
});
|
||||
llvm::errs() << "\n";
|
||||
os << "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user