aaron.ballman 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}}
----------------
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?


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

Reply via email to