diff options
Diffstat (limited to 'test/CXX/basic/basic.scope/basic.scope.hiding')
| -rw-r--r-- | test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp | 45 | 
1 files changed, 45 insertions, 0 deletions
diff --git a/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp b/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp index 911df989530f7..1d2b525da4c20 100644 --- a/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp +++ b/test/CXX/basic/basic.scope/basic.scope.hiding/p2.cpp @@ -22,3 +22,48 @@ void f() {    Y(1); // okay  } +namespace PR17731 { +  void f() { +    struct S { S() {} }; +    int S(void); +    int a = S(); +    struct S b; +    { +      int S(void); +      int a = S(); +      struct S c = b; +    } +    { +      struct S { S() {} }; // expected-note {{candidate}} +      int a = S(); // expected-error {{no viable conversion from 'S'}} +      struct S c = b; // expected-error {{no viable conversion from 'struct S'}} +    } +  } +  void g() { +    int S(void); +    struct S { S() {} }; +    int a = S(); +    struct S b; +    { +      int S(void); +      int a = S(); +      struct S c = b; +    } +    { +      struct S { S() {} }; // expected-note {{candidate}} +      int a = S(); // expected-error {{no viable conversion from 'S'}} +      struct S c = b; // expected-error {{no viable conversion from 'struct S'}} +    } +  } + +  struct A { +    struct B; +    void f(); +    int B; +  }; +  struct A::B {}; +  void A::f() { +    B = 123; +    struct B b; +  } +}  | 
