diff options
Diffstat (limited to 'test/Analysis/plist-diagnostics-template-record.cpp')
-rw-r--r-- | test/Analysis/plist-diagnostics-template-record.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/test/Analysis/plist-diagnostics-template-record.cpp b/test/Analysis/plist-diagnostics-template-record.cpp new file mode 100644 index 000000000000..ffd6d0308836 --- /dev/null +++ b/test/Analysis/plist-diagnostics-template-record.cpp @@ -0,0 +1,42 @@ +// 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 A, class B, class C, int N> +struct DivByZero { + int i; + DivByZero(bool b) { + if (ret()) + i = 50 / (b - 1); + } +}; + +template <class B, class C, int N> +struct DivByZero<char, B, C, N> { + int i; + DivByZero(bool b) { + if (ret()) + i = 50 / (b - 1); + } +}; + +template <typename... Args> +struct DivByZeroVariadic { + int i; + DivByZeroVariadic(bool b) { + if (ret()) + i = 50 / (b - 1); + } +}; + +int main() { + DivByZero<int, float, double, 0> a(1); + DivByZero<char, float, double, 0> a2(1); + DivByZeroVariadic<char, float, double, decltype(nullptr)> a3(1); +} + +// CHECK: <string>Calling constructor for 'DivByZero<int, float, double, 0>'</string> +// CHECK: <string>Calling constructor for 'DivByZero<char, float, double, 0>'</string> +// CHECK: <string>Calling constructor for 'DivByZeroVariadic<char, float, double, nullptr_t>'</string> + |