blob: 67946713c019964fe694984abad3f2f9f98f873d [file] [log] [blame]
Daniel Dunbar8fbe78f2009-12-15 20:14:24 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Anders Carlssonefa47322009-12-09 03:01:51 +00002template<typename> struct PassRefPtr { };
3template<typename T> struct RefPtr {
Chandler Carrutha92409c2011-01-04 04:44:35 +00004 RefPtr& operator=(const RefPtr&) { int a[sizeof(T) ? -1 : -1];} // expected-error 2 {{array with a negative size}}
Anders Carlssonefa47322009-12-09 03:01:51 +00005 RefPtr& operator=(const PassRefPtr<T>&);
6};
7
Douglas Gregorb139cd52010-05-01 20:49:11 +00008struct A { RefPtr<int> a; }; // expected-note {{instantiation of member function 'RefPtr<int>::operator=' requested here}}
9struct B : RefPtr<float> { }; // expected-note {{in instantiation of member function 'RefPtr<float>::operator=' requested here}}
Anders Carlssonefa47322009-12-09 03:01:51 +000010
11void f() {
12 A a1, a2;
Douglas Gregorb139cd52010-05-01 20:49:11 +000013 a1 = a2;
Anders Carlssonefa47322009-12-09 03:01:51 +000014
15 B b1, b2;
Daniel Jasperb3b0b802014-06-20 08:44:22 +000016 b1 = b2;
Anders Carlssonefa47322009-12-09 03:01:51 +000017}