Index: base/memory/scoped_ptr_unittest.nc |
diff --git a/base/memory/scoped_ptr_unittest.nc b/base/memory/scoped_ptr_unittest.nc |
index 30a332edcd469e565089f06922300fc5a3e64423..e4a0d94f6b624c10df569a0ea59939f82f7b8b42 100644 |
--- a/base/memory/scoped_ptr_unittest.nc |
+++ b/base/memory/scoped_ptr_unittest.nc |
@@ -25,11 +25,63 @@ scoped_ptr<Child> DowncastUsingPassAs(scoped_ptr<Parent> object) { |
return object.PassAs<Child>(); |
} |
-#elif defined(NCTEST_NO_REF_COUNTED_SCOPED_PTR) // [r"creating array with negative size"] |
+#elif defined(NCTEST_NO_REF_COUNTED_SCOPED_PTR) // [r"size of array is negative"] |
// scoped_ptr<> should not work for ref-counted objects. |
void WontCompile() { |
scoped_ptr<RefCountedClass> x; |
} |
+#elif defined(NCTEST_NO_ARRAY_WITH_SIZE) // [r"size of array is negative"] |
+ |
+void WontCompile() { |
+ scoped_ptr<int[10]> x; |
+} |
+ |
+#elif defined(NCTEST_NO_PASS_FROM_ARRAY) // [r"is private"] |
+ |
+void WontCompile() { |
+ scoped_ptr<int[]> a; |
+ scoped_ptr<int*> b; |
+ b = a.Pass(); |
+} |
+ |
+#elif defined(NCTEST_NO_PASS_TO_ARRAY) // [r"no match for 'operator='"] |
+ |
+void WontCompile() { |
+ scoped_ptr<int*> a; |
+ scoped_ptr<int[]> b; |
+ b = a.Pass(); |
+} |
+ |
+#elif defined(NCTEST_NO_CONSTRUCT_FROM_ARRAY) // [r"is private"] |
+ |
+void WontCompile() { |
+ scoped_ptr<int[]> a; |
+ scoped_ptr<int*> b(a.Pass()); |
+} |
+ |
+#elif defined(NCTEST_NO_CONSTRUCT_TO_ARRAY) // [r"no matching function for call'"] |
+ |
+void WontCompile() { |
+ scoped_ptr<int*> a; |
+ scoped_ptr<int[]> b(a.Pass()); |
+} |
+ |
+#elif defined(NCTEST_NO_DELETER_REFERENCE) // [r"fails to be a struct or class type'"] |
+ |
+struct Deleter { |
+ void operator()(int*) {} |
+}; |
+ |
+// Current implementation doesn't support Deleter Reference types. Enabling |
+// support would require changes to the behavior of the constructors to match |
+// including the use of SFINAE to discard the type-converting constructor |
+// as per C++11 20.7.1.2.1.19. |
+void WontCompile() { |
+ Deleter d; |
+ int n; |
+ scoped_ptr<int*, Deleter&> a(&n, d); |
+} |
+ |
#endif |