================ @@ -48,8 +48,17 @@ std::string DiagnosticManager::GetString(char separator) { std::string ret; for (const auto &diagnostic : Diagnostics()) { - ret.append(StringForSeverity(diagnostic->GetSeverity())); - ret.append(std::string(diagnostic->GetMessage())); + std::string message(diagnostic->GetMessage()); + std::string searchable_message(diagnostic->GetMessage().lower()); + std::string severity(StringForSeverity(diagnostic->GetSeverity())); + + // Erase the (first) redundant severity string in the message. + size_t position = searchable_message.find(severity); + if (position != std::string::npos) + message.erase(position, severity.length()); + + ret.append(severity); + ret.append(message); ---------------- felipepiovezan wrote:
> I thought StringRef was better for strings that get passed around and reused > and std::string is better for transient work, such as this. > Is general, is there an advantage to using StringRef over std::string? A StringRef is a _non-owning view_ into a string. When we see one of those, that means the author of the code is making a few promises: 1. They don't need to mutate the string 2. They don't need to extend its lifetime past "the current" context. Conversely, when the author conjures a `std::string` out of `StringRef`, the author is saying that they intend to break one of those promises. Note that your code doesn't need to, with the exception `searchable_message`: we had to modify the string with "to_lower"! https://github.com/llvm/llvm-project/pull/76111 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits