mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-24 22:08:57 -04:00

Summary: Currently clang doesn't do qualified lookup when building indirect field decl references. This causes ambiguity when the field is in a base class to which there are multiple valid paths even though a qualified name is used. For example: ``` class B { protected: int i; union { int j; }; }; class X : public B { }; class Y : public B { }; class Z : public X, public Y { int a() { return X::i; } // works int b() { return X::j; } // fails }; ``` Reviewers: rsmith, aaron.ballman, rjmccall Reviewed By: rjmccall Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D45411 llvm-svn: 329521
22 lines
368 B
C++
22 lines
368 B
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
// expected-no-diagnostics
|
|
|
|
class B {
|
|
public:
|
|
int i;
|
|
struct { struct { union { int j; }; }; };
|
|
union { int k; };
|
|
};
|
|
|
|
class X : public B { };
|
|
class Y : public B { };
|
|
|
|
class Z : public X, public Y {
|
|
public:
|
|
int a() { return X::i; }
|
|
int b() { return X::j; }
|
|
int c() { return X::k; }
|
|
int d() { return this->X::j; }
|
|
};
|