Clang Project

clang_source_code/test/Analysis/plist-diagnostics-template-function.cpp
1// RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=core %s
2// RUN: FileCheck --input-file=%t.plist %s
3
4bool ret();
5
6template <class T>
7void f(int i) {
8  if (ret())
9    i = i / (i - 5);
10}
11
12template <>
13void f<int>(int i) {
14  if (ret())
15    i = i / (i - 5);
16}
17
18template <int N = 0>
19void defaultTemplateParameterFunction(int i) {
20  if (ret())
21    int a = 10 / i;
22}
23
24template <typename... Args>
25void variadicTemplateFunction(int i) {
26  if (ret())
27    int a = 10 / i;
28}
29
30int main() {
31  f<int>(5);
32  f<float>(5);
33  defaultTemplateParameterFunction<>(0);
34  variadicTemplateFunction<char, float, double, int *>(0);
35}
36
37// CHECK:      <string>Calling &apos;f&lt;float&gt;&apos;</string>
38// CHECK:      <string>Calling &apos;f&lt;int&gt;&apos;</string>
39// CHECK:      <string>Calling &apos;defaultTemplateParameterFunction&lt;0&gt;&apos;</string>
40// CHECK:      <string>Calling &apos;variadicTemplateFunction&lt;char, float, double, int *&gt;&apos;</string>
41
42