aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/Analysis/templates.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/test/Analysis/templates.cpp b/test/Analysis/templates.cpp
index 6add18c190..671aa78582 100644
--- a/test/Analysis/templates.cpp
+++ b/test/Analysis/templates.cpp
@@ -1,4 +1,6 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -fblocks -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -fblocks -verify %s
+
+void clang_analyzer_eval(bool);
// Do not crash on this templated code which uses a block.
typedef void (^my_block)(void);
@@ -27,3 +29,16 @@ int main(){
Mf m;
m.I();
}
+
+
+// <rdar://problem/11949235>
+template<class T, unsigned N>
+inline unsigned array_lengthof(T (&)[N]) {
+ return N;
+}
+
+void testNonTypeTemplateInstantiation() {
+ const char *S[] = { "a", "b" };
+ clang_analyzer_eval(array_lengthof(S) == 2); // expected-warning{{TRUE}}
+}
+