diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-03-03 22:53:40 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-03-03 22:53:40 +0000 |
commit | f2a42a66e2d9b39bfaf90aae2e14e7a1d1c37025 (patch) | |
tree | e23e3a12a86ddf11f359de005b94940c79261ec3 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | a791914e2ca3149c451c3c55e69ddbc8d10e5e57 (diff) | |
download | bcm5719-llvm-f2a42a66e2d9b39bfaf90aae2e14e7a1d1c37025.tar.gz bcm5719-llvm-f2a42a66e2d9b39bfaf90aae2e14e7a1d1c37025.zip |
Implement disambiguation of base class members via a
nested-name-specifier. For example, this allows member access in
diamond-shaped hierarchies like:
struct Base {
void Foo();
int Member;
};
struct D1 : public Base {};
struct D2 : public Base {};
struct Derived : public D1, public D2 { }
void Test(Derived d) {
d.Member = 17; // error: ambiguous cast from Derived to Base
d.D1::Member = 17; // error: okay, modify D1's Base's Member
}
Fixes PR5820 and <rdar://problem/7535045>. Also, eliminate some
redundancy between Sema::PerformObjectMemberConversion() and
Sema::PerformObjectArgumentInitialization() -- the latter now calls
the former.
llvm-svn: 97674
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions