1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao// RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint* quals1(int const * p);
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint* quals2(int const * const * pp);
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoint* quals3(int const * * const * ppp); // expected-note{{candidate function}}
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test_quals(int * p, int * * pp, int * * * ppp) {
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int const * const * pp2 = pp;
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  quals1(p);
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  quals2(pp);
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  quals3(ppp); // expected-error {{no matching}}
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostruct A {};
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid mquals1(int const A::*p);
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid mquals2(int const A::* const A::*pp);
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid mquals3(int const A::* A::* const A::*ppp);  // expected-note{{candidate function}}
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test_mquals(int A::*p, int A::* A::*pp, int A::* A::* A::*ppp) {
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int const A::* const A::* pp2 = pp;
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  mquals1(p);
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  mquals2(pp);
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  mquals3(ppp); // expected-error {{no matching}}
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid aquals1(int const (*p)[1]);
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid aquals2(int * const (*pp)[1]);
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid aquals2a(int const * (*pp2)[1]); // expected-note{{candidate function}}
28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid test_aquals(int (*p)[1], int * (*pp)[1], int * (*pp2)[1]) {
30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  int const (*p2)[1] = p;
31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  aquals1(p);
32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  aquals2(pp);
33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao  aquals2a(pp2); // expected-error {{no matching}}
34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
35