[Sema] check InitListExpr format strings like {"foo"}
authorYingchi Long <me@inclyc.cn>
Fri, 11 Nov 2022 14:45:08 +0000 (22:45 +0800)
committerYingchi Long <me@inclyc.cn>
Tue, 22 Nov 2022 20:58:19 +0000 (04:58 +0800)
commit2ec79afd89932f0d5a9c44050e7b6dc08ff51699
treece1e2d2e4ea85b31d91c244a3c050aea847dd1d3
parentd9ef5574d4e37af394d7bd53ab7e2534949c5c63
[Sema] check InitListExpr format strings like {"foo"}

Adds InitListExpr case in format string checks.

e.g.

    int sprintf(char *__restrict, const char * __restrict, ...);

    int foo()
    {
        char data[100];
        constexpr const char* fmt2{"%d"};  // no-warning
        sprintf(data, fmt2, 123);
    }

Fixes: https://github.com/llvm/llvm-project/issues/58900

Reviewed By: aaron.ballman

Differential Revision: https://reviews.llvm.org/D137839
clang/lib/Sema/SemaChecking.cpp
clang/test/SemaCXX/format-strings.cpp