erichkeane accepted this revision. erichkeane added inline comments.
================ Comment at: clang/test/CXX/drs/dr0xx.cpp:489 + + using B::i; // expected-error {{redeclaration of using declaration}} + using C::i; // expected-error {{redeclaration of using declaration}} ---------------- aaron.ballman wrote: > Endill wrote: > > aaron.ballman wrote: > > > Endill wrote: > > > > erichkeane wrote: > > > > > Endill wrote: > > > > > > erichkeane wrote: > > > > > > > As a nit, I prefer the 'notes' to live next to the error, and use > > > > > > > a bookmark line-marker here. My issue is basically how we have > > > > > > > no way of knowing (particularly in template code...) what this > > > > > > > diagnoses. > > > > > > > > > > > > > > I would also think a dependent example of this diagnostic would > > > > > > > be useful. > > > > > > >I would also think a dependent example of this diagnostic would be > > > > > > >useful. > > > > > > Do you mean something of this sort: `using D<int>::i`? > > > > > That is a good example too, but more a case where the using > > > > > expression is dependent, so something like: `using Struct<T>::i` > > > > > sorta thing > > > > > I prefer the 'notes' to live next to the error > > > > done > > > > > > > > > I would also think a dependent example of this diagnostic would be > > > > > useful. > > > > I'm not sure how you wanted it to interact with virtual bases, so I > > > > wrote examples both with virtual bases and without > > > > > > > > > use a bookmark line-marker here > > > > While I'm sympathetic to your concern, and agree that bookmarks allow > > > > to order expected errors and notes in the order they would appear for > > > > user, searching for `@#` gives only 5 DR tests. If that's the direction > > > > we want DR tests to take, we should be explicit about this, because > > > > almost all existing tests have to be adjusted. > > > > While I'm sympathetic to your concern, and agree that bookmarks allow > > > > to order expected errors and notes in the order they would appear for > > > > user, searching for @# gives only 5 DR tests. If that's the direction > > > > we want DR tests to take, we should be explicit about this, because > > > > almost all existing tests have to be adjusted. > > > > > > FWIW, we don't have to adjust all the tests -- sometimes bookmarks make > > > things more clear, other times they don't help all that much, and it's an > > > equivalent test either way. My recommendation is to use bookmarks when > > > you think they make sense to use or when a reviewer asks for one. > > > Updating other tests can be done with NFC changes if someone sees a > > > particular need. > > > FWIW, we don't have to adjust all the tests -- sometimes bookmarks make > > > things more clear, other times they don't help all that much, and it's an > > > equivalent test either way. My recommendation is to use bookmarks when > > > you think they make sense to use or when a reviewer asks for one. > > > Updating other tests can be done with NFC changes if someone sees a > > > particular need. > > > > The concern about expected-note comments scattered across a test seems > > applicable to any test with more than one expected-warning or > > expected-error. If maintainers agree that it should be addressed with > > bookmarks, I'll update this patch, and make NFC commits to fix existing > > tests. > > > > What I'd like to avoid is introducing even more inconsistencies into DR > > tests. Until very recently (before tests for 2565 and 2628), bookmarks have > > been used only under `#if __cplusplus`, where you don't have any other > > straightforward option (e.g. dr100). > > The concern about expected-note comments scattered across a test seems > > applicable to any test with more than one expected-warning or > > expected-error. > > To me, it's less about the number of expected diagnostics and more about > locality of the diagnostics. If the warning/error and note are only a few > lines away from one another, I (personally) don't use bookmarks because the > syntax is a bit novel, especially for newcomers. But if there is quite a bit > of space between the warning/error and the note, then I like using bookmarks > because it helps me to pair the note with the diagnostic. e.g., > ``` > // To me, this is fine. > int note_goes_here; // expected-note {{the bad thing was declared here}} > foo(note_goes_here); // expected-warning {{something went wrong with this > argument}} > ``` > ``` > // To me, this is also fine. > int note_goes_here; // #bad_thing > // ... lots of code ... > // ... even more code ... > foo(note_goes_here); // expected-warning {{something went wrong with this > argument}} \ > expected-note@#bad_thing {{the bad thing was declared > here}} > ``` > but it's a value judgment as to what "quite a bit of space" is and whether > using the bookmark improves the test or not. So: > ``` > // To me, this is not really a good use of bookmarks. > int note_goes_here; // #bad_thing > foo(note_goes_here); // expected-warning {{something went wrong with this > argument}} \ > expected-note@#bad_thing {{the bad thing was declared > here}} > > ``` > > What I'd like to avoid is introducing even more inconsistencies into DR > > tests. Until very recently (before tests for 2565 and 2628), bookmarks have > > been used only under #if __cplusplus, where you don't have any other > > straightforward option (e.g. dr100). > > I'm not at all worried about inconsistency in how we surface the `expected` > comments. Bookmarks are a newer and somewhat under-utilized feature of the > diagnostic verifier. We're going to have a lot of tests that predate the > ability to use that feature, so inconsistency is inevitable. > > In this particular case, I don't think the bookmarks are all that helpful > because the note and the diagnostic are adjacent in the code. @erichkeane, > WDYT? So FWIW, I'm the one pushing to have us use bookmarks more often, which others haven't done in the past. I found that while reviewing/going through a bunch of template code for concepts that the tests were 100% unreadable because bookmarks weren't used. As far as readability/beginner friendliness: Everyone I've suggested these to in the past has been a fan of them, and had no problem figuring them out once sent to the documentation page. In this case, as Aaron said, it is perhaps not necessary, but I'm still a fan of keeping them in the order they are emitted if at all possible. If it was up to me, VerifyDiagnosticsConsumer would enforce diagnostic-note ordering. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D138822/new/ https://reviews.llvm.org/D138822 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits