xref: /llvm-project/clang/test/Analysis/sizeofpack.cpp (revision b0914e7276bf97cb57f84fecc3a95e0d3ceeaf3e)
10909a392SArtem Dergachev // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection \
2*b0914e72SArtem Dergachev // RUN:                    -std=c++14 -verify %s
30909a392SArtem Dergachev 
40909a392SArtem Dergachev typedef __typeof(sizeof(int)) size_t;
50909a392SArtem Dergachev 
60909a392SArtem Dergachev void clang_analyzer_eval(bool);
70909a392SArtem Dergachev 
foo()80909a392SArtem Dergachev template <int... N> size_t foo() {
90909a392SArtem Dergachev   return sizeof...(N);
100909a392SArtem Dergachev }
110909a392SArtem Dergachev 
bar()120909a392SArtem Dergachev void bar() {
130909a392SArtem Dergachev   clang_analyzer_eval(foo<>() == 0); // expected-warning{{TRUE}}
140909a392SArtem Dergachev   clang_analyzer_eval(foo<1, 2, 3>() == 3); // expected-warning{{TRUE}}
150909a392SArtem Dergachev }
16