@@ -1912,24 +1912,28 @@ GetAndValidateInfo(const SymbolContext &sc) {
19121912 if (!mangled)
19131913 return llvm::createStringError (" Function does not have a mangled name." );
19141914
1915- auto demangled_name = mangled.GetDemangledName ().GetStringRef ();
1915+ const char *mangled_name = mangled.GetMangledName ().AsCString (" " );
1916+ auto [demangled_name, info] =
1917+ SwiftLanguageRuntime::TrackedDemangleSymbolAsString (
1918+ mangled_name, SwiftLanguageRuntime::eSimplified, &sc);
1919+ info.PrefixRange .second =
1920+ std::min (info.BasenameRange .first , info.ArgumentsRange .first );
1921+ info.SuffixRange .first =
1922+ std::max (info.BasenameRange .second , info.ArgumentsRange .second );
1923+ info.SuffixRange .second = demangled_name.length ();
1924+
19161925 if (demangled_name.empty ())
19171926 return llvm::createStringError (
19181927 " Function '%s' does not have a demangled name." ,
19191928 mangled.GetMangledName ().AsCString (" " ));
19201929
1921- const std::optional<DemangledNameInfo> &info = mangled.GetDemangledInfo ();
1922- if (!info)
1923- return llvm::createStringError (
1924- " Function '%s' does not have demangled info." , demangled_name.data ());
1925-
19261930 // Function without a basename is nonsense.
1927- if (!info-> hasBasename ())
1931+ if (!info. hasBasename ())
19281932 return llvm::createStringError (
19291933 " DemangledInfo for '%s does not have basename range." ,
19301934 demangled_name.data ());
19311935
1932- return std::make_pair (demangled_name, * info);
1936+ return std::make_pair (demangled_name, info);
19331937}
19341938
19351939static llvm::Expected<llvm::StringRef>
0 commit comments