| // { dg-options "-Wformat -fdiagnostics-show-caret" } |
| |
| class logger |
| { |
| public: |
| void log (const char *fmt, ...) __attribute__((format (printf, 2, 3))); |
| }; |
| |
| void test () |
| { |
| logger out; |
| out.log ("before %s after", 42); // { dg-warning "argument 3 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| out.log ("before %s after", 42); |
| ~^ ~~ |
| | | |
| char* int |
| %d |
| { dg-end-multiline-output "" } */ |
| } |
| |
| template <typename T> |
| class logger_2 |
| { |
| public: |
| void log (const char *fmt, ...) __attribute__((format (printf, 2, 3))); |
| }; |
| |
| void test_2 () |
| { |
| logger_2<int> out; |
| out.log ("before %s after", 42); // { dg-warning "argument 3 has type 'int'" } |
| /* { dg-begin-multiline-output "" } |
| out.log ("before %s after", 42); |
| ~^ ~~ |
| | | |
| char* int |
| %d |
| { dg-end-multiline-output "" } */ |
| } |