Skip to content

Commit f403f10

Browse files
Merge pull request #11268 from adrian-prantl/159298739
[lldb] Fix regression in 32-bit String data formatter
2 parents e1618ed + 6c60e5b commit f403f10

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

lldb/source/Plugins/Language/Swift/SwiftFormatters.cpp

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -219,19 +219,23 @@ static bool makeStringGutsSummary(
219219
llvm::StringRef variantCase = variant_sp->GetValueAsCString();
220220

221221
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();
232231
} else {
233232
return error("unknown variant");
234233
}
234+
if (variantCase == "bridged") {
235+
if (!payload_sp)
236+
return error("unexpected layout (bridged)");
237+
payload_sp = payload_sp->GetChildAtIndex(0, true); // "instance"
238+
}
235239
if (!payload_sp)
236240
return error("no payload");
237241

0 commit comments

Comments
 (0)