blob: 1f44a789cc922c49ce14014fc62f55fb03927bcd [file] [log] [blame]
Kristof Umann3ea74422018-05-25 13:18:38 +00001// 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