@@ -381,7 +381,8 @@ class LLDBTypeInfoProvider : public swift::remote::TypeInfoProvider {
381381 return nullptr ;
382382 TypeSystemSwiftTypeRef &typesystem = *m_ts;
383383 // Build a TypeInfo for the Clang type.
384- auto size = clang_type.GetByteSize (exe_scope);
384+ std::optional<uint64_t > size =
385+ llvm::expectedToOptional (clang_type.GetByteSize (exe_scope));
385386 auto bit_align = clang_type.GetTypeBitAlign (exe_scope);
386387 std::vector<swift::reflection::FieldInfo> fields;
387388 if (clang_type.IsAggregateType ()) {
@@ -1214,9 +1215,11 @@ llvm::Expected<CompilerType> SwiftLanguageRuntime::GetChildCompilerTypeAtIndex(
12141215 if (auto pack_element_type = ts->GetSILPackElementAtIndex (type, idx)) {
12151216 llvm::raw_string_ostream os (child_name);
12161217 os << ' .' << idx;
1217- child_byte_size =
1218- GetBitSize (pack_element_type, exe_ctx.GetBestExecutionContextScope ())
1219- .value_or (0 );
1218+ auto size_or_err =
1219+ GetBitSize (pack_element_type, exe_ctx.GetBestExecutionContextScope ());
1220+ if (!size_or_err)
1221+ return size_or_err.takeError ();
1222+ child_byte_size = *size_or_err;
12201223 int stack_dir = -1 ;
12211224 child_byte_offset = ts->GetPointerByteSize () * idx * stack_dir;
12221225 child_bitfield_bit_size = 0 ;
@@ -2236,7 +2239,9 @@ bool SwiftLanguageRuntime::GetDynamicTypeAndAddress_Existential(
22362239
22372240
22382241 if (use_local_buffer)
2239- PushLocalBuffer (existential_address, in_value.GetByteSize ().value_or (0 ));
2242+ PushLocalBuffer (
2243+ existential_address,
2244+ llvm::expectedToOptional (in_value.GetByteSize ()).value_or (0 ));
22402245
22412246 swift::remote::RemoteAddress remote_existential (existential_address);
22422247
@@ -2522,7 +2527,7 @@ CompilerType SwiftLanguageRuntime::BindGenericTypeParameters(
25222527 LLDB_LOG_ERROR (
25232528 GetLog (LLDBLog::Expressions | LLDBLog::Types),
25242529 type_ref_or_err.takeError (),
2525- " Couldn't get rype ref when binding generic type parameters: {0}" );
2530+ " Couldn't get type ref when binding generic type parameters: {0}" );
25262531 failure = true ;
25272532 return ;
25282533 }
@@ -2687,8 +2692,8 @@ bool SwiftLanguageRuntime::GetDynamicTypeAndAddress_Value(
26872692 ExecutionContextScope *exe_scope = exe_ctx.GetBestExecutionContextScope ();
26882693 if (!exe_scope)
26892694 return false ;
2690- std::optional<uint64_t > size =
2691- bound_type.GetByteSize (exe_ctx.GetBestExecutionContextScope ());
2695+ std::optional<uint64_t > size = llvm::expectedToOptional (
2696+ bound_type.GetByteSize (exe_ctx.GetBestExecutionContextScope ())) ;
26922697 if (!size)
26932698 return false ;
26942699 AddressType address_type;
@@ -2704,7 +2709,8 @@ bool SwiftLanguageRuntime::GetDynamicTypeAndAddress_Value(
27042709 if (in_value_buffer.empty ())
27052710 return false ;
27062711 // If the dynamic type doesn't in the buffer we can't use it either.
2707- if (in_value_buffer.size () < bound_type.GetByteSize (exe_scope))
2712+ if (in_value_buffer.size () <
2713+ llvm::expectedToOptional (bound_type.GetByteSize (exe_scope)).value_or (0 ))
27082714 return false ;
27092715
27102716 value_type = Value::GetValueTypeFromAddressType (address_type);
@@ -2810,8 +2816,9 @@ Value::ValueType SwiftLanguageRuntime::GetValueType(
28102816 }
28112817
28122818 if (use_local_buffer)
2813- PushLocalBuffer (existential_address,
2814- in_value.GetByteSize ().value_or (0 ));
2819+ PushLocalBuffer (
2820+ existential_address,
2821+ llvm::expectedToOptional (in_value.GetByteSize ()).value_or (0 ));
28152822
28162823 // Read the value witness table and check if the data is inlined in
28172824 // the existential container or not.
@@ -3331,7 +3338,10 @@ SwiftLanguageRuntime::GetTypeRef(CompilerType type,
33313338 auto type_ref_or_err = reflection_ctx->GetTypeRef (
33323339 dem, node, module_holder->GetDescriptorFinder ());
33333340 if (!type_ref_or_err)
3334- return type_ref_or_err.takeError ();
3341+ return llvm::joinErrors (
3342+ llvm::createStringError (" cannot get typeref for type %s" ,
3343+ type.GetMangledTypeName ().GetCString ()),
3344+ type_ref_or_err.takeError ());
33353345
33363346 if (log && log->GetVerbose ()) {
33373347 std::stringstream ss;
@@ -3537,14 +3547,12 @@ SwiftLanguageRuntime::ResolveTypeAlias(CompilerType alias) {
35373547 return llvm::createStringError (" cannot resolve type alias via reflection" );
35383548}
35393549
3540- std::optional <uint64_t >
3550+ llvm::Expected <uint64_t >
35413551SwiftLanguageRuntime::GetBitSize (CompilerType type,
35423552 ExecutionContextScope *exe_scope) {
35433553 auto type_info_or_err = GetSwiftRuntimeTypeInfo (type, exe_scope);
3544- if (!type_info_or_err) {
3545- LLDB_LOG_ERROR (GetLog (LLDBLog::Types), type_info_or_err.takeError (), " {0}" );
3546- return {};
3547- }
3554+ if (!type_info_or_err)
3555+ return type_info_or_err.takeError ();
35483556
35493557 return type_info_or_err->getSize () * 8 ;
35503558}
0 commit comments