diff options
Diffstat (limited to 'test/Analysis/plist-diagnostics-template-function.cpp')
-rw-r--r-- | test/Analysis/plist-diagnostics-template-function.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/Analysis/plist-diagnostics-template-function.cpp b/test/Analysis/plist-diagnostics-template-function.cpp new file mode 100644 index 0000000000000..1f44a789cc922 --- /dev/null +++ b/test/Analysis/plist-diagnostics-template-function.cpp @@ -0,0 +1,41 @@ +// RUN: %clang_analyze_cc1 -analyzer-output=plist -o %t.plist -std=c++11 -analyzer-checker=core %s +// RUN: FileCheck --input-file=%t.plist %s + +bool ret(); + +template <class T> +void f(int i) { + if (ret()) + i = i / (i - 5); +} + +template <> +void f<int>(int i) { + if (ret()) + i = i / (i - 5); +} + +template <int N = 0> +void defaultTemplateParameterFunction(int i) { + if (ret()) + int a = 10 / i; +} + +template <typename... Args> +void variadicTemplateFunction(int i) { + if (ret()) + int a = 10 / i; +} + +int main() { + f<int>(5); + f<float>(5); + defaultTemplateParameterFunction<>(0); + variadicTemplateFunction<char, float, double, int *>(0); +} + +// CHECK: <string>Calling 'f<float>'</string> +// CHECK: <string>Calling 'f<int>'</string> +// CHECK: <string>Calling 'defaultTemplateParameterFunction<0>'</string> +// CHECK: <string>Calling 'variadicTemplateFunction<char, float, double, int *>'</string> + |