aboutsummaryrefslogtreecommitdiff
path: root/test/SemaCXX/null_in_arithmetic_ops.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2011-06-19 09:05:14 +0000
committerChandler Carruth <chandlerc@gmail.com>2011-06-19 09:05:14 +0000
commit2af68e4761ed30181540dafb5572993daffa4910 (patch)
treea53c7e2d4eaf30c6511feb0524827b53d470e982 /test/SemaCXX/null_in_arithmetic_ops.cpp
parente3d49b44ad0596b2998ecf2e7ca78d59188920e5 (diff)
Add test cases for false positives on -Wnull-arithmetic from Richard
Trieu, and fix them by checking for array and function types as well as pointer types. I've added a predicate method on Type to bundle together the logic we're using here: isPointerLikeType(). I'd welcome better names for this predicate, this is the best I came up with. It's implemented as a switch to be a touch lighter weight than all the chained isa<...> casts that would result otherwise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133383 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaCXX/null_in_arithmetic_ops.cpp')
-rw-r--r--test/SemaCXX/null_in_arithmetic_ops.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/test/SemaCXX/null_in_arithmetic_ops.cpp b/test/SemaCXX/null_in_arithmetic_ops.cpp
index b0303177c2..78c76e7e4c 100644
--- a/test/SemaCXX/null_in_arithmetic_ops.cpp
+++ b/test/SemaCXX/null_in_arithmetic_ops.cpp
@@ -59,6 +59,10 @@ void f() {
b = 0 == a;
b = 0 == &a;
+ b = NULL < NULL || NULL > NULL;
+ b = NULL <= NULL || NULL >= NULL;
+ b = NULL == NULL || NULL != NULL;
+
b = ((NULL)) != a; // expected-warning{{use of NULL in arithmetic operation}}
void (^c)();
@@ -67,4 +71,11 @@ void f() {
class X;
void (X::*d) ();
b = d == NULL || NULL == d || d != NULL || NULL != d;
+
+ extern void e();
+ b = e == NULL || NULL == e || e != NULL || NULL != e;
+
+ int f[2];
+ b = f == NULL || NULL == f || f != NULL || NULL != f;
+ b = "f" == NULL || NULL == "f" || "f" != NULL || NULL != "f";
}