-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[lldb] Highlight "note:" in CommandReturnObject #114610
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Motivated by #114608 |
@llvm/pr-subscribers-lldb Author: Jonas Devlieghere (JDevlieghere) ChangesWe have helpers to emit warnings and errors. Do the same thing for notes to they stand out more. Full diff: https://github.com/llvm/llvm-project/pull/114610.diff 3 Files Affected:
diff --git a/lldb/include/lldb/Interpreter/CommandReturnObject.h b/lldb/include/lldb/Interpreter/CommandReturnObject.h
index a491a6c1535b11..14f2c4a62f7cbd 100644
--- a/lldb/include/lldb/Interpreter/CommandReturnObject.h
+++ b/lldb/include/lldb/Interpreter/CommandReturnObject.h
@@ -110,6 +110,11 @@ class CommandReturnObject {
void AppendMessageWithFormat(const char *format, ...)
__attribute__((format(printf, 2, 3)));
+ void AppendNote(llvm::StringRef in_string);
+
+ void AppendNoteWithFormat(const char *format, ...)
+ __attribute__((format(printf, 2, 3)));
+
void AppendWarning(llvm::StringRef in_string);
void AppendWarningWithFormat(const char *format, ...)
diff --git a/lldb/source/Commands/CommandObjectDWIMPrint.cpp b/lldb/source/Commands/CommandObjectDWIMPrint.cpp
index 76bed100dc7291..dc0f98ed06f7fe 100644
--- a/lldb/source/Commands/CommandObjectDWIMPrint.cpp
+++ b/lldb/source/Commands/CommandObjectDWIMPrint.cpp
@@ -121,8 +121,8 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command,
if (note_shown)
return;
- result.GetOutputStream()
- << "note: object description requested, but type doesn't implement "
+ result.AppendNote(
+ << "object description requested, but type doesn't implement "
"a custom object description. Consider using \"p\" instead of "
"\"po\" (this note will only be shown once per debug session).\n";
note_shown = true;
@@ -164,8 +164,8 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command,
StringRef flags;
if (args.HasArgs())
flags = args.GetArgString();
- result.AppendMessageWithFormatv("note: ran `frame variable {0}{1}`",
- flags, expr);
+ result.AppendNoteWithFormatv("ran `frame variable {0}{1}`", flags,
+ expr);
}
dump_val_object(*valobj_sp);
@@ -224,8 +224,7 @@ void CommandObjectDWIMPrint::DoExecute(StringRef command,
StringRef flags;
if (args.HasArgs())
flags = args.GetArgStringWithDelimiter();
- result.AppendMessageWithFormatv("note: ran `expression {0}{1}`", flags,
- expr);
+ result.AppendNoteWithFormatv("ran `expression {0}{1}`", flags, expr);
}
if (valobj_sp->GetError().GetError() != UserExpression::kNoResult)
diff --git a/lldb/source/Interpreter/CommandReturnObject.cpp b/lldb/source/Interpreter/CommandReturnObject.cpp
index 94f5ff608b2aea..2776efbb5ee36d 100644
--- a/lldb/source/Interpreter/CommandReturnObject.cpp
+++ b/lldb/source/Interpreter/CommandReturnObject.cpp
@@ -27,6 +27,12 @@ static llvm::raw_ostream &warning(Stream &strm) {
<< "warning: ";
}
+static llvm::raw_ostream ¬e(Stream &strm) {
+ return llvm::WithColor(strm.AsRawOstream(), llvm::HighlightColor::Note,
+ llvm::ColorMode::Enable)
+ << "note: ";
+}
+
static void DumpStringToStreamWithNewline(Stream &strm, const std::string &s) {
bool add_newline = false;
if (!s.empty()) {
@@ -74,6 +80,18 @@ void CommandReturnObject::AppendMessageWithFormat(const char *format, ...) {
GetOutputStream() << sstrm.GetString();
}
+void CommandReturnObject::AppendNoteWithFormat(const char *format, ...) {
+ if (!format)
+ return;
+ va_list args;
+ va_start(args, format);
+ StreamString sstrm;
+ sstrm.PrintfVarArg(format, args);
+ va_end(args);
+
+ note(GetOutputStream()) << sstrm.GetString();
+}
+
void CommandReturnObject::AppendWarningWithFormat(const char *format, ...) {
if (!format)
return;
@@ -92,6 +110,12 @@ void CommandReturnObject::AppendMessage(llvm::StringRef in_string) {
GetOutputStream() << in_string.rtrim() << '\n';
}
+void CommandReturnObject::AppendNote(llvm::StringRef in_string) {
+ if (in_string.empty())
+ return;
+ note(GetOutputStream()) << in_string.rtrim() << '\n';
+}
+
void CommandReturnObject::AppendWarning(llvm::StringRef in_string) {
if (in_string.empty())
return;
|
void AppendNote(llvm::StringRef in_string); | ||
|
||
void AppendNoteWithFormat(const char *format, ...) | ||
__attribute__((format(printf, 2, 3))); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice, didn't know about __attribute__((format(printf
@@ -27,6 +27,12 @@ static llvm::raw_ostream &warning(Stream &strm) { | |||
<< "warning: "; | |||
} | |||
|
|||
static llvm::raw_ostream ¬e(Stream &strm) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since note
is a function should it be capitalized to follow the LLDB style?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually error
and warning
are not capitalized, I guess we can either keep all three lower case or capitalize all of them, up to you
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I was going to say this is not the right way to do this, but I suppose there isn't really a better mechanism available, since this isn't an error. Otherwise you'd be better off joining a diagnostic error with the note so the UI layer can choose how to render the note.
We have helpers to emit warnings and errors. Do the same thing for notes to they stand out more.
We have helpers to emit warnings and errors. Do the same thing for notes to they stand out more.
We have helpers to emit warnings and errors. Do the same thing for notes to they stand out more.
We have helpers to emit warnings and errors. Do the same thing for notes to they stand out more. (cherry picked from commit 79178ca)
We have helpers to emit warnings and errors. Do the same thing for notes to they stand out more.