@@ -219,19 +219,23 @@ static bool makeStringGutsSummary(
219
219
llvm::StringRef variantCase = variant_sp->GetValueAsCString ();
220
220
221
221
ValueObjectSP payload_sp;
222
- if (variantCase.starts_with (" immortal" )) {
223
- payload_sp = variant_sp->GetChildAtNamePath ({g_immortal, g__value});
224
- } else if (variantCase.starts_with (" native" )) {
225
- payload_sp = variant_sp->GetChildAtNamePath ({g_immortal, g__value});
226
- } else if (variantCase.starts_with (" bridged" )) {
227
- static ConstString g_bridged (" bridged" );
228
- auto anyobject_sp = variant_sp->GetChildMemberWithName (g_bridged, true );
229
- if (!anyobject_sp)
230
- return error (" unexpected layout (bridged)" );
231
- payload_sp = anyobject_sp->GetChildAtIndex (0 , true ); // "instance"
222
+ if (variantCase == " immortal" || variantCase == " native" ||
223
+ variantCase == " bridged" ) {
224
+ payload_sp = variant_sp->GetSyntheticValue ();
225
+ if (!payload_sp)
226
+ return error (" unexpected layout (no variant)" );
227
+ payload_sp = payload_sp->GetChildAtIndex (0 );
228
+ if (!payload_sp)
229
+ return error (" unexpected layout (no variant payload)" );
230
+ payload_sp = payload_sp->GetSyntheticValue ();
232
231
} else {
233
232
return error (" unknown variant" );
234
233
}
234
+ if (variantCase == " bridged" ) {
235
+ if (!payload_sp)
236
+ return error (" unexpected layout (bridged)" );
237
+ payload_sp = payload_sp->GetChildAtIndex (0 , true ); // "instance"
238
+ }
235
239
if (!payload_sp)
236
240
return error (" no payload" );
237
241
0 commit comments