@@ -96,13 +96,53 @@ bool lldb_private::formatters::swift::URL_SummaryProvider(
96
96
return false ;
97
97
98
98
std::string summary;
99
- if (!underlying_url_sp->GetSummaryAsCString (summary, options))
99
+ auto try_format = [&]() {
100
+ if (underlying_url_sp->GetSummaryAsCString (summary, options))
101
+ return true ;
102
+ auto dynval_sp =
103
+ underlying_url_sp->GetDynamicValue (lldb::eDynamicCanRunTarget);
104
+ if (!dynval_sp)
105
+ return false ;
106
+ return dynval_sp->GetSummaryAsCString (summary, options);
107
+ };
108
+ if (!try_format ())
100
109
return false ;
101
-
102
110
stream.PutCString (summary.c_str ());
103
111
return true ;
104
112
}
105
113
114
+ bool lldb_private::formatters::swift::SwiftURL_SummaryProvider (
115
+ ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
116
+ static ConstString g__baseURL (" _baseURL" );
117
+ static ConstString g__parseInfo (" _parseInfo" );
118
+ static ConstString g_urlString (" urlString" );
119
+
120
+ ValueObjectSP rel_str_sp (
121
+ valobj.GetChildAtNamePath ({g__parseInfo, g_urlString}));
122
+ if (!rel_str_sp)
123
+ return false ;
124
+
125
+ std::string base;
126
+ ValueObjectSP base_url_sp (valobj.GetChildAtNamePath ({g__baseURL}));
127
+ if (base_url_sp)
128
+ if (ValueObjectSP non_synth_valobj = base_url_sp->GetNonSyntheticValue ()) {
129
+ const char *value = non_synth_valobj->GetValueAsCString ();
130
+ if (value && llvm::StringRef (value) != " none" )
131
+ if (!base_url_sp->GetSummaryAsCString (base, options))
132
+ return false ;
133
+ }
134
+
135
+ std::string summary;
136
+ if (!rel_str_sp->GetSummaryAsCString (summary, options))
137
+ return false ;
138
+
139
+ // This format matches the implementastion of _SwiftURL.description.
140
+ stream << summary;
141
+ if (!base.empty ())
142
+ stream << " -- " << base;
143
+ return true ;
144
+ }
145
+
106
146
bool lldb_private::formatters::swift::IndexPath_SummaryProvider (
107
147
ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options) {
108
148
static ConstString g__indexes (" _indexes" );
0 commit comments