@@ -1787,8 +1787,8 @@ bool TypeSystemClang::RecordHasFields(const RecordDecl *record_decl) {
17871787 // -flimit-debug-info instead of just seeing nothing if this is a base class
17881788 // (since we were hiding empty base classes), or nothing when you turn open
17891789 // an valiable whose type was incomplete.
1790- ClangASTMetadata * meta_data = GetMetadata (record_decl);
1791- if ( meta_data && meta_data->IsForcefullyCompleted ())
1790+ if (std::optional< ClangASTMetadata> meta_data = GetMetadata (record_decl);
1791+ meta_data && meta_data->IsForcefullyCompleted ())
17921792 return true ;
17931793
17941794 return false ;
@@ -2465,27 +2465,31 @@ void TypeSystemClang::SetMetadataAsUserID(const clang::Type *type,
24652465}
24662466
24672467void TypeSystemClang::SetMetadata (const clang::Decl *object,
2468- ClangASTMetadata & metadata) {
2468+ ClangASTMetadata metadata) {
24692469 m_decl_metadata[object] = metadata;
24702470}
24712471
24722472void TypeSystemClang::SetMetadata (const clang::Type *object,
2473- ClangASTMetadata & metadata) {
2473+ ClangASTMetadata metadata) {
24742474 m_type_metadata[object] = metadata;
24752475}
24762476
2477- ClangASTMetadata *TypeSystemClang::GetMetadata (const clang::Decl *object) {
2477+ std::optional<ClangASTMetadata>
2478+ TypeSystemClang::GetMetadata (const clang::Decl *object) {
24782479 auto It = m_decl_metadata.find (object);
24792480 if (It != m_decl_metadata.end ())
2480- return &It->second ;
2481- return nullptr ;
2481+ return It->second ;
2482+
2483+ return std::nullopt ;
24822484}
24832485
2484- ClangASTMetadata *TypeSystemClang::GetMetadata (const clang::Type *object) {
2486+ std::optional<ClangASTMetadata>
2487+ TypeSystemClang::GetMetadata (const clang::Type *object) {
24852488 auto It = m_type_metadata.find (object);
24862489 if (It != m_type_metadata.end ())
2487- return &It->second ;
2488- return nullptr ;
2490+ return It->second ;
2491+
2492+ return std::nullopt ;
24892493}
24902494
24912495void TypeSystemClang::SetCXXRecordDeclAccess (const clang::CXXRecordDecl *object,
@@ -2934,9 +2938,10 @@ bool TypeSystemClang::IsRuntimeGeneratedType(
29342938 clang::ObjCInterfaceDecl *result_iface_decl =
29352939 llvm::dyn_cast<clang::ObjCInterfaceDecl>(decl_ctx);
29362940
2937- ClangASTMetadata * ast_metadata = GetMetadata (result_iface_decl);
2941+ std::optional< ClangASTMetadata> ast_metadata = GetMetadata (result_iface_decl);
29382942 if (!ast_metadata)
29392943 return false ;
2944+
29402945 return (ast_metadata->GetISAPtr () != 0 );
29412946}
29422947
@@ -3622,8 +3627,8 @@ bool TypeSystemClang::IsPossibleDynamicType(lldb::opaque_compiler_type_t type,
36223627 if (is_complete)
36233628 success = cxx_record_decl->isDynamicClass ();
36243629 else {
3625- ClangASTMetadata * metadata = GetMetadata (cxx_record_decl);
3626- if (metadata )
3630+ if (std::optional< ClangASTMetadata> metadata =
3631+ GetMetadata (cxx_record_decl) )
36273632 success = metadata->GetIsDynamicCXXType ();
36283633 else {
36293634 is_complete = GetType (pointee_qual_type).GetCompleteType ();
@@ -5326,7 +5331,8 @@ GetDynamicArrayInfo(TypeSystemClang &ast, SymbolFile *sym_file,
53265331 clang::QualType qual_type,
53275332 const ExecutionContext *exe_ctx) {
53285333 if (qual_type->isIncompleteArrayType ())
5329- if (auto *metadata = ast.GetMetadata (qual_type.getTypePtr ()))
5334+ if (std::optional<ClangASTMetadata> metadata =
5335+ ast.GetMetadata (qual_type.getTypePtr ()))
53305336 return sym_file->GetDynamicArrayInfoForUID (metadata->GetUserID (),
53315337 exe_ctx);
53325338 return std::nullopt ;
@@ -8868,8 +8874,7 @@ void TypeSystemClang::DumpTypeDescription(lldb::opaque_compiler_type_t type,
88688874
88698875 CompilerType ct (weak_from_this (), type);
88708876 const clang::Type *clang_type = ClangUtil::GetQualType (ct).getTypePtr ();
8871- ClangASTMetadata *metadata = GetMetadata (clang_type);
8872- if (metadata) {
8877+ if (std::optional<ClangASTMetadata> metadata = GetMetadata (clang_type)) {
88738878 metadata->Dump (&s);
88748879 }
88758880}
@@ -9490,7 +9495,7 @@ bool TypeSystemClang::DeclContextIsClassMethod(void *opaque_decl_ctx) {
94909495 return true ;
94919496 } else if (clang::FunctionDecl *fun_decl =
94929497 llvm::dyn_cast<clang::FunctionDecl>(decl_ctx)) {
9493- if (ClangASTMetadata * metadata = GetMetadata (fun_decl))
9498+ if (std::optional< ClangASTMetadata> metadata = GetMetadata (fun_decl))
94949499 return metadata->HasObjectPtr ();
94959500 }
94969501
@@ -9543,7 +9548,7 @@ TypeSystemClang::DeclContextGetLanguage(void *opaque_decl_ctx) {
95439548 } else if (llvm::isa<clang::CXXMethodDecl>(decl_ctx)) {
95449549 return eLanguageTypeC_plus_plus;
95459550 } else if (auto *fun_decl = llvm::dyn_cast<clang::FunctionDecl>(decl_ctx)) {
9546- if (ClangASTMetadata * metadata = GetMetadata (fun_decl))
9551+ if (std::optional< ClangASTMetadata> metadata = GetMetadata (fun_decl))
95479552 return metadata->GetObjectPtrLanguage ();
95489553 }
95499554
@@ -9593,7 +9598,7 @@ TypeSystemClang::DeclContextGetAsNamespaceDecl(const CompilerDeclContext &dc) {
95939598 return nullptr ;
95949599}
95959600
9596- ClangASTMetadata *
9601+ std::optional< ClangASTMetadata>
95979602TypeSystemClang::DeclContextGetMetaData (const CompilerDeclContext &dc,
95989603 const Decl *object) {
95999604 TypeSystemClang *ast = llvm::cast<TypeSystemClang>(dc.GetTypeSystem ());
@@ -9827,8 +9832,7 @@ bool TypeSystemClang::IsForcefullyCompleted(lldb::opaque_compiler_type_t type) {
98279832 if (record_type) {
98289833 const clang::RecordDecl *record_decl = record_type->getDecl ();
98299834 assert (record_decl);
9830- ClangASTMetadata *metadata = GetMetadata (record_decl);
9831- if (metadata)
9835+ if (std::optional<ClangASTMetadata> metadata = GetMetadata (record_decl))
98329836 return metadata->IsForcefullyCompleted ();
98339837 }
98349838 }
@@ -9838,11 +9842,13 @@ bool TypeSystemClang::IsForcefullyCompleted(lldb::opaque_compiler_type_t type) {
98389842bool TypeSystemClang::SetDeclIsForcefullyCompleted (const clang::TagDecl *td) {
98399843 if (td == nullptr )
98409844 return false ;
9841- ClangASTMetadata * metadata = GetMetadata (td);
9842- if (metadata == nullptr )
9845+ std::optional< ClangASTMetadata> metadata = GetMetadata (td);
9846+ if (! metadata)
98439847 return false ;
98449848 m_has_forcefully_completed_types = true ;
98459849 metadata->SetIsForcefullyCompleted ();
9850+ SetMetadata (td, *metadata);
9851+
98469852 return true ;
98479853}
98489854
0 commit comments