// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-print-source-range-info %s 2>&1 | FileCheck %s --strict-whitespace // CHECK: error: no matching function template struct mcdata { typedef int result_type; }; template typename mcdata::result_type wrap_mean(mcdata const &); // CHECK: :{[[@LINE+1]]:19-[[@LINE+1]]:53}: note: {{.*}}: no overload of 'wrap_mean' void add_property(double (*)(mcdata const &)); void f() { add_property(&wrap_mean); } // CHECK: error: no matching function // CHECK: :{[[@LINE+1]]:10-[[@LINE+1]]:51}: note: {{.*}}: cannot pass pointer to generic address space void baz(__attribute__((opencl_private)) int *Data) {} void fizz() { int *Nop; baz(Nop); // CHECK: error: no matching function // CHECK: :[[@LINE+1]]:53: note: {{.*}}: 'this' object is in address space '__private' __attribute__((opencl_private)) static auto err = [&]() {}; err(); } // CHECK: error: no matching function struct Bar { // CHECK: :{[[@LINE+1]]:26-[[@LINE+1]]:32}: note: {{.*}} would lose const qualifier static void foo(int num, int *X) {} // CHECK: :{[[@LINE+1]]:17-[[@LINE+1]]:25}: note: {{.*}} no known conversion static void foo(int *err, int *x) {} }; void bar(const int *Y) { Bar::foo(5, Y); } struct InComp; struct A {}; struct B : public A{}; // CHECK: error: no matching function // CHECK: :{[[@LINE+5]]:36-[[@LINE+5]]:50}: note: {{.*}}: cannot convert initializer // CHECK: error: no matching function // CHECK: :{[[@LINE+3]]:36-[[@LINE+3]]:50}: note: {{.*}}: cannot convert argument // CHECK: error: no matching function // CHECK: :{[[@LINE+1]]:11-[[@LINE+1]]:18}: note: {{.*}}: no known conversion void hoge(char aa, const char *bb, const A& third); // CHECK: error: no matching function // CHECK: :{[[@LINE+1]]:14-[[@LINE+1]]:16}: note: {{.*}}: cannot convert from base class void derived(B*); void func(const A &arg) { hoge(1, "pass", {{{arg}}}); InComp *a; hoge(1, "pass", a); hoge("first", 5, 6); A *b; derived(b); } struct Q { // CHECK: error: invalid operands // CHECK: :[[@LINE+1]]:6: note: {{.*}}: 'this' argument has type 'const Q' Q &operator+(void*); }; void fuga(const Q q) { q + 3; } template class Type1 {}; // CHECK: error: no matching function // CHECK: :{[[@LINE+1]]:43-[[@LINE+1]]:54}: note: {{.*}}: expects an lvalue template void Function1(int zz, Type1 &x, int ww) {} void Function() { Function1(33, Type1<-42>(), 66); }