+void test_2 (void) +{ + takes_int_ptr(ivar); /* { dg-warning "" "" { target c } } */ + /* { dg-error "" "" { target c++ } .-1 } */ + /* { dg-message "possible fix: take the address with '&'" "" { target *-*-* } .-2 } */ + + /* Expect an '&' fix-it hint. */ + /* { dg-begin-multiline-output "" } + takes_int_ptr(ivar); + ^~~~ + | + int + { dg-end-multiline-output "" } */ + /* { dg-begin-multiline-output "" } + takes_int_ptr(ivar); + ^~~~ + &
I experimented with adding hints to sizeof_pointer_memaccess_warning over the weekend and ran into a location difference between the two front-ends. In an attempt to resolve it, rather than using an "insertion hint" like I think you did above, I used a replacement hint. And although it started out as a workaround I ended up liking the result better. What I think the same approach would result in here is something like: takes_int_ptr(ivar); note: possible fix: take the address with '&' note: takes_int_ptr(ivar); ^~~~ | int note: takes_int_ptr(ivar); ^~~~ &ivar Have you considered this style, i.e., printing valid expressions in the hints when possible rather than just operators? It solves the problem of the lone operators looking a little too terse and cryptic. I realize it's not always possible (not every fix-it hint is for a bad expression) but I'm wondering if it would be worth using when it is. Martin