@@ -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 ;
@@ -2197,7 +2200,9 @@ bool SwiftLanguageRuntime::GetDynamicTypeAndAddress_Existential(
21972200
21982201
21992202 if (use_local_buffer)
2200- PushLocalBuffer (existential_address, in_value.GetByteSize ().value_or (0 ));
2203+ PushLocalBuffer (
2204+ existential_address,
2205+ llvm::expectedToOptional (in_value.GetByteSize ()).value_or (0 ));
22012206
22022207 swift::remote::RemoteAddress remote_existential (existential_address);
22032208
@@ -2445,7 +2450,7 @@ CompilerType SwiftLanguageRuntime::BindGenericTypeParameters(
24452450 LLDB_LOG_ERROR (
24462451 GetLog (LLDBLog::Expressions | LLDBLog::Types),
24472452 type_ref_or_err.takeError (),
2448- " Couldn't get rype ref when binding generic type parameters: {0}" );
2453+ " Couldn't get type ref when binding generic type parameters: {0}" );
24492454 failure = true ;
24502455 return ;
24512456 }
@@ -2610,8 +2615,8 @@ bool SwiftLanguageRuntime::GetDynamicTypeAndAddress_Value(
26102615 ExecutionContextScope *exe_scope = exe_ctx.GetBestExecutionContextScope ();
26112616 if (!exe_scope)
26122617 return false ;
2613- std::optional<uint64_t > size =
2614- bound_type.GetByteSize (exe_ctx.GetBestExecutionContextScope ());
2618+ std::optional<uint64_t > size = llvm::expectedToOptional (
2619+ bound_type.GetByteSize (exe_ctx.GetBestExecutionContextScope ())) ;
26152620 if (!size)
26162621 return false ;
26172622 AddressType address_type;
@@ -2627,7 +2632,8 @@ bool SwiftLanguageRuntime::GetDynamicTypeAndAddress_Value(
26272632 if (in_value_buffer.empty ())
26282633 return false ;
26292634 // If the dynamic type doesn't in the buffer we can't use it either.
2630- if (in_value_buffer.size () < bound_type.GetByteSize (exe_scope))
2635+ if (in_value_buffer.size () <
2636+ llvm::expectedToOptional (bound_type.GetByteSize (exe_scope)).value_or (0 ))
26312637 return false ;
26322638
26332639 value_type = Value::GetValueTypeFromAddressType (address_type);
@@ -2733,8 +2739,9 @@ Value::ValueType SwiftLanguageRuntime::GetValueType(
27332739 }
27342740
27352741 if (use_local_buffer)
2736- PushLocalBuffer (existential_address,
2737- in_value.GetByteSize ().value_or (0 ));
2742+ PushLocalBuffer (
2743+ existential_address,
2744+ llvm::expectedToOptional (in_value.GetByteSize ()).value_or (0 ));
27382745
27392746 // Read the value witness table and check if the data is inlined in
27402747 // the existential container or not.
@@ -3254,7 +3261,10 @@ SwiftLanguageRuntime::GetTypeRef(CompilerType type,
32543261 auto type_ref_or_err = reflection_ctx->GetTypeRef (
32553262 dem, node, module_holder->GetDescriptorFinder ());
32563263 if (!type_ref_or_err)
3257- return type_ref_or_err.takeError ();
3264+ return llvm::joinErrors (
3265+ llvm::createStringError (" cannot get typeref for type %s" ,
3266+ type.GetMangledTypeName ().GetCString ()),
3267+ type_ref_or_err.takeError ());
32583268
32593269 if (log && log->GetVerbose ()) {
32603270 std::stringstream ss;
@@ -3460,14 +3470,12 @@ SwiftLanguageRuntime::ResolveTypeAlias(CompilerType alias) {
34603470 return llvm::createStringError (" cannot resolve type alias via reflection" );
34613471}
34623472
3463- std::optional <uint64_t >
3473+ llvm::Expected <uint64_t >
34643474SwiftLanguageRuntime::GetBitSize (CompilerType type,
34653475 ExecutionContextScope *exe_scope) {
34663476 auto type_info_or_err = GetSwiftRuntimeTypeInfo (type, exe_scope);
3467- if (!type_info_or_err) {
3468- LLDB_LOG_ERROR (GetLog (LLDBLog::Types), type_info_or_err.takeError (), " {0}" );
3469- return {};
3470- }
3477+ if (!type_info_or_err)
3478+ return type_info_or_err.takeError ();
34713479
34723480 return type_info_or_err->getSize () * 8 ;
34733481}
0 commit comments