@@ -1917,24 +1917,28 @@ GetAndValidateInfo(const SymbolContext &sc) {
19171917 if (!mangled)
19181918 return llvm::createStringError (" Function does not have a mangled name." );
19191919
1920- auto demangled_name = mangled.GetDemangledName ().GetStringRef ();
1920+ const char *mangled_name = mangled.GetMangledName ().AsCString (" " );
1921+ auto [demangled_name, info] =
1922+ SwiftLanguageRuntime::TrackedDemangleSymbolAsString (
1923+ mangled_name, SwiftLanguageRuntime::eSimplified, &sc);
1924+ info.PrefixRange .second =
1925+ std::min (info.BasenameRange .first , info.ArgumentsRange .first );
1926+ info.SuffixRange .first =
1927+ std::max (info.BasenameRange .second , info.ArgumentsRange .second );
1928+ info.SuffixRange .second = demangled_name.length ();
1929+
19211930 if (demangled_name.empty ())
19221931 return llvm::createStringError (
19231932 " Function '%s' does not have a demangled name." ,
19241933 mangled.GetMangledName ().AsCString (" " ));
19251934
1926- const std::optional<DemangledNameInfo> &info = mangled.GetDemangledInfo ();
1927- if (!info)
1928- return llvm::createStringError (
1929- " Function '%s' does not have demangled info." , demangled_name.data ());
1930-
19311935 // Function without a basename is nonsense.
1932- if (!info-> hasBasename ())
1936+ if (!info. hasBasename ())
19331937 return llvm::createStringError (
19341938 " DemangledInfo for '%s does not have basename range." ,
19351939 demangled_name.data ());
19361940
1937- return std::make_pair (demangled_name, * info);
1941+ return std::make_pair (demangled_name, info);
19381942}
19391943
19401944static llvm::Expected<llvm::StringRef>
0 commit comments