brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · 88e06fc Raw
85 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3// FIXME: embellish4 5namespace test0 {6  namespace A {7    class Foo {8    };9 10    void foo(const Foo &foo);11  }12 13  class Test {14    enum E { foo = 0 };15 16    void test() {17      foo(A::Foo()); // expected-error {{not a function}}18    }19  };20}21 22// If X contains [...] then Y is empty.23// - a declaration of a class member24namespace test_adl_suppression_by_class_member {25  namespace N {26    struct T {};27    void f(T); // expected-note {{declared here}}28  }29  struct S {30    void f();31    void test() {32      N::T t;33      f(t); // expected-error {{too many arguments}}34    }35  };36}37 38// - a block-scope function declaration that is not a using-declaration39namespace test_adl_suppression_by_block_scope {40  namespace N {41    struct S {};42    void f(S);43  }44  namespace M { void f(int); } // expected-note 2{{candidate}}45  void test1() {46    N::S s;47    using M::f;48    f(s); // ok49  }50 51  void test2() {52    N::S s;53    extern void f(char); // expected-note {{passing argument to parameter here}}54    f(s); // expected-error {{no viable conversion from 'N::S' to 'char'}}55  }56 57  void test3() {58    N::S s;59    extern void f(char); // expected-note {{candidate}}60    using M::f;61    f(s); // expected-error {{no matching function}}62  }63 64  void test4() {65    N::S s;66    using M::f;67    extern void f(char); // expected-note {{candidate}}68    f(s); // expected-error {{no matching function}}69  }70 71}72 73// - a declaration that is neither a function nor a function template74namespace test_adl_suppression_by_non_function {75  namespace N {76    struct S {};77    void f(S);78  }79  void test() {80    extern void (*f)();81    N::S s;82    f(s); // expected-error {{too many arguments}}83  }84}85