// RUN: clang-cc -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(); | |
} |