Skip to content

Commit 5498b22

Browse files
authored
Merge pull request #64728 from zoecarver/revert-75dc69a81da07647bda2d1ccc3b82ce6e68b44a7
[5.9][🍒] Revert 75dc69a
2 parents b866cdb + 4c73369 commit 5498b22

File tree

4 files changed

+1
-131
lines changed

4 files changed

+1
-131
lines changed

include/swift/AST/ClangModuleLoader.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ class SwiftLookupTable;
4242
class ValueDecl;
4343
class VisibleDeclConsumer;
4444

45-
void dumpSwiftLookupTable(SwiftLookupTable *table);
46-
4745
/// Represents the different namespaces for types in C.
4846
///
4947
/// A simplified version of clang::Sema::LookupKind.

lib/ClangImporter/ClangImporter.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6567,6 +6567,7 @@ CxxRecordSemanticsKind
65676567
CxxRecordSemantics::evaluate(Evaluator &evaluator,
65686568
CxxRecordSemanticsDescriptor desc) const {
65696569
const auto *decl = desc.decl;
6570+
auto &clangSema = desc.ctx.getClangModuleLoader()->getClangSema();
65706571

65716572
if (hasImportAsRefAttr(decl)) {
65726573
return CxxRecordSemanticsKind::Reference;

lib/ClangImporter/SwiftLookupTable.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2217,7 +2217,3 @@ SwiftNameLookupExtension::createExtensionReader(
22172217
// Return the new reader.
22182218
return std::move(tableReader);
22192219
}
2220-
2221-
void swift::dumpSwiftLookupTable(SwiftLookupTable *table) {
2222-
table->dump(llvm::dbgs());
2223-
}

lib/Sema/CSDiagnostics.cpp

Lines changed: 0 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -3817,131 +3817,6 @@ void MissingMemberFailure::diagnoseUnsafeCxxMethod(SourceLoc loc,
38173817
!isa_and_nonnull<clang::CXXRecordDecl>(
38183818
baseType->getAnyNominal()->getClangDecl()))
38193819
return;
3820-
3821-
if (name.getBaseIdentifier().str() == "getFromPointer" ||
3822-
name.getBaseIdentifier().str() == "isValid" ||
3823-
name.getBaseIdentifier().str() == "__dataUnsafe" ||
3824-
name.getBaseIdentifier().str() == "__getOpaquePointerValueUnsafe" ||
3825-
name.getBaseIdentifier().str() == "__getStartUnsafe" ||
3826-
name.getBaseIdentifier().str() == "__c_strUnsafe") {
3827-
// OK, we did not find a member that we probably should have.
3828-
// Dump the world.
3829-
llvm::dbgs() << "====================================================\n";
3830-
llvm::dbgs() << "====================================================\n\n";
3831-
llvm::dbgs() << "Hello! You have unfortuantly stubled across an interop bug that we have been trying to track down for a while. Please reach out to Zoe Carver and provide a link to this build. You can re-run this build and it should work next time. Sorry for the inconvience.\n\n";
3832-
llvm::dbgs() << "====================================================\n";
3833-
llvm::dbgs() << "====================================================\n\n";
3834-
3835-
llvm::dbgs() << "THE NAME: "; name.print(llvm::dbgs());
3836-
3837-
llvm::dbgs() << "====================================================\n";
3838-
llvm::dbgs() << "====================================================\n\n";
3839-
3840-
auto cxxRecord = cast<clang::CXXRecordDecl>(baseType->getAnyNominal()->getClangDecl());
3841-
llvm::dbgs() << "CXX RECORD: "; cxxRecord->dump();
3842-
3843-
llvm::dbgs() << "====================================================\n";
3844-
llvm::dbgs() << "====================================================\n\n";
3845-
3846-
auto dumpRedecls = [](const clang::CXXRecordDecl *cxxRecordToDump) {
3847-
llvm::dbgs() << "REDECLS:\n";
3848-
unsigned redeclIdx = 0;
3849-
for (auto redecl : cxxRecordToDump->redecls()) {
3850-
llvm::dbgs() << "REDECL(" << redeclIdx << "): "; redecl->dump();
3851-
redeclIdx++;
3852-
}
3853-
};
3854-
3855-
dumpRedecls(cxxRecord);
3856-
3857-
llvm::dbgs() << "====================================================\n";
3858-
llvm::dbgs() << "====================================================\n\n";
3859-
if (name.getBaseIdentifier().str() == "getFromPointer" ||
3860-
name.getBaseIdentifier().str() == "isValid") {
3861-
llvm::dbgs() << "LOOKUP UNSAFE VERSION:\n";
3862-
auto unsafeId =
3863-
ctx.getIdentifier("__" + name.getBaseIdentifier().str().str() + "Unsafe");
3864-
for (auto found :
3865-
baseType->getAnyNominal()->lookupDirect(DeclBaseName(unsafeId))) {
3866-
llvm::dbgs() << "**FOUND UNSAFE VERSION**\n";
3867-
llvm::dbgs() << "UNSAFE: ";
3868-
found->dump(llvm::dbgs());
3869-
3870-
if (auto cxxMethod = dyn_cast_or_null<clang::CXXMethodDecl>(found->getClangDecl())) {
3871-
llvm::dbgs() << "FOUND CXX METHOD.";
3872-
auto returnType = cxxMethod->getReturnType();
3873-
llvm::dbgs() << "CXX METHOD RETURN TYPE: ";
3874-
returnType->dump();
3875-
3876-
llvm::dbgs() << "CAN RETURN TYPE: ";
3877-
returnType->getCanonicalTypeUnqualified().dump();
3878-
3879-
if (auto recordType = dyn_cast<clang::RecordType>(returnType)) {
3880-
dumpRedecls(returnType->getAsCXXRecordDecl());
3881-
} else {
3882-
llvm::dbgs() << "NOT A RECORD TYPE\n";
3883-
}
3884-
}
3885-
}
3886-
} else {
3887-
std::string safeName;
3888-
if (name.getBaseIdentifier().str() == "__dataUnsafe")
3889-
safeName = "data";
3890-
if (name.getBaseIdentifier().str() == "__getOpaquePointerValueUnsafe")
3891-
safeName = "getOpaquePointerValue";
3892-
if (name.getBaseIdentifier().str() == "__getStartUnsafe")
3893-
safeName = "getStart";
3894-
if (name.getBaseIdentifier().str() == "__c_strUnsafe")
3895-
safeName = "c_str";
3896-
3897-
auto safeId = ctx.getIdentifier(safeName);
3898-
for (auto found :
3899-
baseType->getAnyNominal()->lookupDirect(DeclBaseName(safeId))) {
3900-
llvm::dbgs() << "**FOUND SAFE VERSION**\n";
3901-
llvm::dbgs() << "UNSAFE: ";
3902-
found->dump(llvm::dbgs());
3903-
3904-
if (auto cxxMethod = dyn_cast_or_null<clang::CXXMethodDecl>(found->getClangDecl())) {
3905-
llvm::dbgs() << "FOUND CXX METHOD.";
3906-
auto returnType = cxxMethod->getReturnType();
3907-
llvm::dbgs() << "CXX METHOD RETURN TYPE: ";
3908-
returnType->dump();
3909-
3910-
llvm::dbgs() << "CAN RETURN TYPE: ";
3911-
returnType->getCanonicalTypeUnqualified().dump();
3912-
3913-
if (auto recordType = dyn_cast<clang::RecordType>(returnType)) {
3914-
dumpRedecls(returnType->getAsCXXRecordDecl());
3915-
} else {
3916-
llvm::dbgs() << "NOT A RECORD TYPE\n";
3917-
}
3918-
}
3919-
}
3920-
}
3921-
3922-
llvm::dbgs() << "====================================================\n";
3923-
llvm::dbgs() << "====================================================\n\n";
3924-
llvm::dbgs() << "(IMPORTED) SWIFT TYPE: ";
3925-
baseType->dump(llvm::dbgs());
3926-
3927-
llvm::dbgs() << "(IMPORTED) SWIFT DECL: ";
3928-
baseType->getAnyNominal()->print(llvm::dbgs());
3929-
3930-
// And for my final trick, I will dump the whole lookup table.
3931-
llvm::dbgs() << "====================================================\n";
3932-
llvm::dbgs() << "====================================================\n\n";
3933-
llvm::dbgs() << "LOOKUP TABLE: ";
3934-
3935-
if (auto clangModule = cxxRecord->getOwningModule()) {
3936-
dumpSwiftLookupTable(ctx.getClangModuleLoader()->findLookupTable(clangModule));
3937-
} else {
3938-
llvm::dbgs() << "NO MODULE\n";
3939-
}
3940-
3941-
llvm::dbgs() << "====================================================\n";
3942-
llvm::dbgs() << "DBUG DUMP DONE\n";
3943-
llvm::dbgs() << "====================================================\n\n";
3944-
}
39453820

39463821
auto unsafeId =
39473822
ctx.getIdentifier("__" + name.getBaseIdentifier().str().str() + "Unsafe");

0 commit comments

Comments
 (0)