__attribute__((nonnull)) can apply to reference-to-pointer
parameters. Fixes <rdar://problem/8769025>.
llvm-svn: 121864
diff --git a/clang/test/SemaCXX/attr-nonnull.cpp b/clang/test/SemaCXX/attr-nonnull.cpp
index e5b5329..19d6642 100644
--- a/clang/test/SemaCXX/attr-nonnull.cpp
+++ b/clang/test/SemaCXX/attr-nonnull.cpp
@@ -16,3 +16,14 @@
s.g("", 0, ""); // expected-warning{{null passed}}
s.g(0, "", 0);
}
+
+namespace rdar8769025 {
+ __attribute__((nonnull)) void f0(int *&p);
+ __attribute__((nonnull)) void f1(int * const &p);
+ __attribute__((nonnull(2))) void f2(int i, int * const &p);
+
+ void test_f1() {
+ f1(0); // expected-warning{{null passed to a callee which requires a non-null argument}}
+ f2(0, 0); // expected-warning{{null passed to a callee which requires a non-null argument}}
+ }
+}