aboutsummaryrefslogtreecommitdiff
path: root/test/Analysis/initializer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/initializer.cpp')
-rw-r--r--test/Analysis/initializer.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/Analysis/initializer.cpp b/test/Analysis/initializer.cpp
index 3f7802c56d29..a71e35dc63c6 100644
--- a/test/Analysis/initializer.cpp
+++ b/test/Analysis/initializer.cpp
@@ -109,3 +109,37 @@ namespace DefaultConstructorWithCleanups {
return w.arr[0].value; // no-warning
}
}
+
+namespace DefaultMemberInitializers {
+ struct Wrapper {
+ int value = 42;
+
+ Wrapper() {}
+ Wrapper(int x) : value(x) {}
+ Wrapper(bool) {}
+ };
+
+ void test() {
+ Wrapper w1;
+ clang_analyzer_eval(w1.value == 42); // expected-warning{{TRUE}}
+
+ Wrapper w2(50);
+ clang_analyzer_eval(w2.value == 50); // expected-warning{{TRUE}}
+
+ Wrapper w3(false);
+ clang_analyzer_eval(w3.value == 42); // expected-warning{{TRUE}}
+ }
+
+ struct StringWrapper {
+ const char s[4] = "abc";
+ const char *p = "xyz";
+
+ StringWrapper(bool) {}
+ };
+
+ void testString() {
+ StringWrapper w(true);
+ clang_analyzer_eval(w.s[1] == 'b'); // expected-warning{{TRUE}}
+ clang_analyzer_eval(w.p[1] == 'y'); // expected-warning{{TRUE}}
+ }
+}