inclyc added inline comments.

================
Comment at: clang/test/Sema/format-strings-scanf.c:236
+  scanf(1 ? "%s" : "%d", i); // expected-warning{{format specifies type 'char 
*'}} \
+                             // expected-note{{format string is defined here}}
   scanf(0 ? "%d %d" : "%d", i); // no warning
----------------
```
// long macro
#include <cstdio>

#define SOME_STRANGE_MACRO(a, b) ((0) ? (a) : (b))

int main() {
  int *i;
  scanf(SOME_STRANGE_MACRO("%d", "%d %s"), i);
}
```

previous:
```
sample.cpp:7:39: warning: more '%' conversions than data arguments 
[-Wformat-insufficient-args]
  scanf(SOME_STRANGE_MACRO("%d", "%d %s"), i);
                                     ~^
sample.cpp:3:48: note: expanded from macro 'SOME_STRANGE_MACRO'
#define SOME_STRANGE_MACRO(a, b) ((0) ? (a) : (b))
                                               ^
1 warning generated.
```

now:

```
sample.cpp:7:9: warning: more '%' conversions than data arguments 
[-Wformat-insufficient-args]
  scanf(SOME_STRANGE_MACRO("%d", "%d %s"), i);
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sample.cpp:3:34: note: expanded from macro 'SOME_STRANGE_MACRO'
#define SOME_STRANGE_MACRO(a, b) ((0) ? (a) : (b))
                                 ^~~~~~~~~~~~~~~~~
sample.cpp:7:39: note: format string is defined here
  scanf(SOME_STRANGE_MACRO("%d", "%d %s"), i);
                                     ~^
sample.cpp:3:48: note: expanded from macro 'SOME_STRANGE_MACRO'
#define SOME_STRANGE_MACRO(a, b) ((0) ? (a) : (b))
                                               ^
1 warning generated.
```

I think it is better to underline the buggy expression, if this sucks maybe we 
can check if this is constexpr **after** checking conditional operator ` ? :`  
or somehow other statement classes ?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D130906

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

Reply via email to