From 7e0b207e54780dfadbd7c51e2e2528d4bef3415c Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Sun, 13 Dec 2009 17:53:43 +0000 Subject: More improvements to checking allocation and deallocation functions. llvm-svn: 91244 --- .../basic.stc.dynamic.allocation/p1.cpp | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) (limited to 'clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation') diff --git a/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp b/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp index f8fd9f2dd50..dac994393a6 100644 --- a/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp +++ b/clang/test/CXX/basic/basic.stc/basic.stc.dynamic/basic.stc.dynamic.allocation/p1.cpp @@ -10,3 +10,35 @@ namespace NS { } static void *operator new(size_t); // expected-error {{'operator new' cannot be declared static in global scope}} + +struct B { + void operator new(size_t); // expected-error {{'operator new' must return type 'void *'}} +}; + +struct C { + void *operator new(); // expected-error {{'operator new' must have at least one parameter}} +}; + +struct D { + void *operator new(bool); // expected-error {{'operator new' takes type size_t ('unsigned long') as first parameter}} +}; + +struct E { + void *operator new(size_t = 0); // expected-error {{parameter of 'operator new' cannot have a default argument}} +}; + +struct F { + template void *operator new(size_t, int); +}; + +struct G { + template T operator new(size_t, int); // expected-error {{'operator new' cannot have a dependent return type; use 'void *' instead}} +}; + +struct H { + template void *operator new(T, int); // expected-error {{'operator new' cannot take a dependent type as first parameter; use size_t}} +}; + +struct I { + template void *operator new(size_t); // expected-error {{'operator new' template must have at least two parameters}} +}; -- cgit v1.2.3