@@ -935,27 +935,16 @@ std::unique_ptr<Language::TypeScavenger> ObjCLanguage::GetTypeScavenger() {
935
935
ResultSet &results) override {
936
936
bool result = false ;
937
937
938
- Process *process = exe_scope->CalculateProcess ().get ();
939
- if (process) {
940
- auto objc_runtime = ObjCLanguageRuntime::Get (*process);
941
- if (objc_runtime) {
942
- auto decl_vendor = objc_runtime->GetDeclVendor ();
943
- if (decl_vendor) {
944
- std::vector<CompilerDecl> decls;
938
+ if (auto *process = exe_scope->CalculateProcess ().get ()) {
939
+ if (auto *objc_runtime = ObjCLanguageRuntime::Get (*process)) {
940
+ if (auto *decl_vendor = objc_runtime->GetDeclVendor ()) {
945
941
ConstString name (key);
946
- decl_vendor->FindDecls (name, true , UINT32_MAX, decls);
947
- for (auto decl : decls) {
948
- if (decl) {
949
- auto *ctx = llvm::dyn_cast<ClangASTContext>(decl.GetTypeSystem ());
950
- if (ctx)
951
- if (CompilerType candidate =
952
- ctx->GetTypeForDecl (decl.GetOpaqueDecl ())) {
953
- result = true ;
954
- std::unique_ptr<Language::TypeScavenger::Result> result (
955
- new ObjCScavengerResult (candidate));
956
- results.insert (std::move (result));
957
- }
958
- }
942
+ for (const CompilerType &type :
943
+ decl_vendor->FindTypes (name, /* max_matches*/ UINT32_MAX)) {
944
+ result = true ;
945
+ std::unique_ptr<Language::TypeScavenger::Result> result (
946
+ new ObjCScavengerResult (type));
947
+ results.insert (std::move (result));
959
948
}
960
949
}
961
950
}
@@ -976,17 +965,13 @@ std::unique_ptr<Language::TypeScavenger> ObjCLanguage::GetTypeScavenger() {
976
965
if (auto *target = exe_scope->CalculateTarget ().get ()) {
977
966
if (auto *clang_modules_decl_vendor =
978
967
target->GetClangModulesDeclVendor ()) {
979
- std::vector<clang::NamedDecl *> decls;
980
968
ConstString key_cs (key);
981
-
982
- if (clang_modules_decl_vendor->FindDecls (key_cs, false , UINT32_MAX,
983
- decls) > 0 &&
984
- !decls.empty ()) {
985
- CompilerType module_type =
986
- ClangASTContext::GetTypeForDecl (decls.front ());
969
+ auto types = clang_modules_decl_vendor->FindTypes (
970
+ key_cs, /* max_matches*/ UINT32_MAX);
971
+ if (!types.empty ()) {
987
972
result = true ;
988
973
std::unique_ptr<Language::TypeScavenger::Result> result (
989
- new ObjCScavengerResult (module_type ));
974
+ new ObjCScavengerResult (types. front () ));
990
975
results.insert (std::move (result));
991
976
}
992
977
}
@@ -997,7 +982,7 @@ std::unique_ptr<Language::TypeScavenger> ObjCLanguage::GetTypeScavenger() {
997
982
998
983
friend class lldb_private ::ObjCLanguage;
999
984
};
1000
-
985
+
1001
986
class ObjCDebugInfoScavenger : public Language ::ImageListTypeScavenger {
1002
987
public:
1003
988
CompilerType AdjustForInclusion (CompilerType &candidate) override {
0 commit comments