aboutsummaryrefslogtreecommitdiff
path: root/test/Analysis/array-struct-region.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/array-struct-region.cpp')
-rw-r--r--test/Analysis/array-struct-region.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/Analysis/array-struct-region.cpp b/test/Analysis/array-struct-region.cpp
index cffa64d21a..12ae5d3eba 100644
--- a/test/Analysis/array-struct-region.cpp
+++ b/test/Analysis/array-struct-region.cpp
@@ -90,6 +90,22 @@ void testArgument() {
clang_analyzer_eval(getAssignedField(getS()) == 42); // expected-warning{{TRUE}}
}
+void testImmediateUseParens() {
+ int x = ((getS())).field;
+
+ if (x != 42) return;
+ clang_analyzer_eval(x == 42); // expected-warning{{TRUE}}
+
+ clang_analyzer_eval(getConstrainedField(((getS()))) == 42); // expected-warning{{TRUE}}
+ clang_analyzer_eval(getAssignedField(((getS()))) == 42); // expected-warning{{TRUE}}
+
+#if __cplusplus
+ clang_analyzer_eval(((getS())).check()); // expected-warning{{TRUE}}
+ clang_analyzer_eval(!((getS()))); // expected-warning{{FALSE}}
+ clang_analyzer_eval(~((getS()))); // expected-warning{{FALSE}}
+#endif
+}
+
//--------------------
// C++-only tests