erichkeane added a comment.
Herald added subscribers: Michael137, JDevlieghere.

A few comments.  I don't mind the approach, though I find myself wondering if 
the "FormatDiagnostic" call should stay the same, and choose the legacy-reason 
only when a sarif reason doesn't exist?  Or for some level of command line 
control?

The clang-side interface to this seems a touch clunky, and I fear it'll make 
continuing its use/generalizing its use less likely.



================
Comment at: clang/include/clang/Basic/DiagnosticIDs.h:165
+struct DiagnosticReason {
+  std::string Legacy;
+  std::string SARIF;
----------------
"Reason" is a part of the diagnostic itself, pre-rendered, right? Since these 
strings are literals, can this be an llvm::StringLiteral instead? (the 
constexpr-stringref type)?

Else, generating these is going to cost us at startup time.


================
Comment at: clang/include/clang/Basic/DiagnosticSemaKinds.td:4520
+  DiagReason<
+    /*Legacy:*/"invalid explicitly-specified argument for template parameter 
%0",
+    /*SARIF:*/"we passed a %select{type|value|class template}1 as our 
%ordinal2 "
----------------
Already kidna hate this format here.  Is there any way we could make this be 
something more like:

`DiagReason<Legacy<"whatever">, SARIF<"whatever">>` ?


================
Comment at: clang/lib/Format/TokenAnalyzer.cpp:47
       llvm::SmallVector<char, 128> Message;
-      Info.FormatDiagnostic(Message);
+      Info.FormatSummary(Message);
+      Info.FormatLegacyReason(Message);
----------------
This pair of calls has happened ~20 times by the time I've scrolled here.  Can 
we do a single call here of some sort instead?


================
Comment at: clang/test/Frontend/sarif-reason.cpp:15
+void g() {
+  f1<0>(); // expected-error{{no matching function for call to 'f1'}}
+  f1<S>(); // expected-error{{no matching function for call to 'f1'}}
----------------
This is definitely a case where I'd love the diagnostics formatted/arranged 
differently here.  If you can use the #BOOKMARK style to make sure errors and 
notes are together, it would better illustrate what you're trying to do here.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D138939/new/

https://reviews.llvm.org/D138939

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to