p3.cpp revision c5a89a1cc2f168ad0a115c560b8de5f1c952d8c5
1b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek// RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
277349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek
377349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenekstruct B1 {
477349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek  B1(int);
577349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek  B1(int, int);
677349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek};
777349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenekstruct D1 : B1 {
877349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek  using B1::B1;
977349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek};
10b387a3f23e423d62c053be86294b703da1d1a222Ted KremenekD1 d1a(1), d1b(1, 1);
1141573ebf8fb971f40fa8a3e20648362c359b4916Ted Kremenek
12b387a3f23e423d62c053be86294b703da1d1a222Ted KremenekD1 fd1() { return 1; }
1377349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek
1477349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenekstruct B2 {
1577349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek  explicit B2(int, int = 0, int = 0);
16d065d6080f0620bb80b933f3f5d52d37bb2ea770Ted Kremenek};
17d065d6080f0620bb80b933f3f5d52d37bb2ea770Ted Kremenekstruct D2 : B2 { // expected-note 2 {{candidate constructor}}
18d065d6080f0620bb80b933f3f5d52d37bb2ea770Ted Kremenek  using B2::B2;
191309f9a3b225ea846e5822691c39a77423125505Ted Kremenek};
201309f9a3b225ea846e5822691c39a77423125505Ted KremenekD2 d2a(1), d2b(1, 1), d2c(1, 1, 1);
211309f9a3b225ea846e5822691c39a77423125505Ted Kremenek
221309f9a3b225ea846e5822691c39a77423125505Ted KremenekD2 fd2() { return 1; } // expected-error {{no viable conversion}}
231309f9a3b225ea846e5822691c39a77423125505Ted Kremenek
246b67630d5df195f4fe0e4273061c016901d69681Ted Kremenekstruct B3 {
25c0c3f5dbc9e78aa53a86c7d5e3eeda23ddad93d6Ted Kremenek  B3(void*); // expected-note {{inherited from here}}
26f494b579b22f9950f5af021f0bf9879a91bb8b41Steve Naroff};
27bb141217871e93767aa3f2de1b9946fa6d37066aZhongxing Xustruct D3 : B3 { // expected-note 2 {{candidate constructor}}
2877349cb20bfd7069d081f84c91975bfa8ef60a32Ted Kremenek  using B3::B3; // expected-note {{candidate constructor (inherited)}}
291eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump};
305e2d2c2ee3cf410643e0f9a5701708e51409d973Benjamin KramerD3 fd3() { return 1; } // expected-error {{no viable conversion}}
315e2d2c2ee3cf410643e0f9a5701708e51409d973Benjamin Kramer
325e2d2c2ee3cf410643e0f9a5701708e51409d973Benjamin Kramertemplate<typename T> struct T1 : B1 {
33f494b579b22f9950f5af021f0bf9879a91bb8b41Steve Naroff  using B1::B1;
341eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump};
3525e695b2d574d919cc1bbddf3a2efe073d449b1cZhongxing Xutemplate<typename T> struct T2 : T1<T> {
3625e695b2d574d919cc1bbddf3a2efe073d449b1cZhongxing Xu  using T1<int>::T1;
370111f575b968e423dccae439e501225b8314b257Zhongxing Xu};
381eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumptemplate<typename T> struct T3 : T1<int> {
39b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek  using T1<T>::T1;
40031ccc0555a82afc2e8afe29e19dd57ff204e2deZhongxing Xu};
411eb4433ac451dc16f4133a88af2d002ac26c58efMike Stumpstruct U {
42b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek  friend T1<int>::T1(int);
43b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek  friend T1<int>::T1(int, int);
44031ccc0555a82afc2e8afe29e19dd57ff204e2deZhongxing Xu  friend T2<int>::T2(int);
451eb4433ac451dc16f4133a88af2d002ac26c58efMike Stump  friend T2<int>::T2(int, int);
46b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek  friend T3<int>::T3(int);
474adc81e540b874bafa15715fd2c5cb662463debdTed Kremenek  friend T3<int>::T3(int, int);
48cf118d41f7930a18dce97416ef7834a62642f587Ted Kremenek};
49b387a3f23e423d62c053be86294b703da1d1a222Ted Kremenek