Merge remote-tracking branch 'origin/master' into master-next

This commit is contained in:
swift-ci
2019-10-31 20:49:50 -07:00
103 changed files with 425 additions and 361 deletions

View File

@@ -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";
}
}
}