reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | // RUN: %clang_cc1 -emit-llvm-only %s // Tests that Sema properly creates member-access expressions for // these instead of bare FieldDecls. struct Foo { int myvalue; // We have to override these to get something with an lvalue result. int &operator++(int); int &operator--(int); }; struct Test0 { Foo memfoo; int memint; int memarr[10]; Test0 *memptr; struct MemClass { int a; } memstruct; int &memfun(); void test() { int *p; p = &Test0::memfoo++; p = &Test0::memfoo--; p = &Test0::memarr[1]; p = &Test0::memptr->memint; p = &Test0::memstruct.a; p = &Test0::memfun(); } }; void test0() { Test0 mytest; mytest.test(); } namespace rdar9065289 { typedef void (*FuncPtr)(); struct X0 { }; struct X1 { X0* x0; FuncPtr X0::*fptr; }; void f(X1 p) { (p.x0->*(p.fptr))(); } } |