@@ -1912,24 +1912,28 @@ GetAndValidateInfo(const SymbolContext &sc) {
1912
1912
if (!mangled)
1913
1913
return llvm::createStringError (" Function does not have a mangled name." );
1914
1914
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
+
1916
1925
if (demangled_name.empty ())
1917
1926
return llvm::createStringError (
1918
1927
" Function '%s' does not have a demangled name." ,
1919
1928
mangled.GetMangledName ().AsCString (" " ));
1920
1929
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
-
1926
1930
// Function without a basename is nonsense.
1927
- if (!info-> hasBasename ())
1931
+ if (!info. hasBasename ())
1928
1932
return llvm::createStringError (
1929
1933
" DemangledInfo for '%s does not have basename range." ,
1930
1934
demangled_name.data ());
1931
1935
1932
- return std::make_pair (demangled_name, * info);
1936
+ return std::make_pair (demangled_name, info);
1933
1937
}
1934
1938
1935
1939
static llvm::Expected<llvm::StringRef>
0 commit comments