diff options
author | Reid Kleckner <rnk@google.com> | 2015-10-20 18:12:08 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2015-10-20 18:12:08 +0000 |
commit | 077fe12e5dfe942ec565383c46434476eb31e62c (patch) | |
tree | b332cc461eee964ce6bb1c8091fecbe201133ecf /llvm/tools/llvm-diff/DifferenceEngine.cpp | |
parent | 32064024b93d7d0b5225ac576b7684f604c352bf (diff) | |
download | llvm-077fe12e5dfe942ec565383c46434476eb31e62c.zip llvm-077fe12e5dfe942ec565383c46434476eb31e62c.tar.gz llvm-077fe12e5dfe942ec565383c46434476eb31e62c.tar.bz2 |
Look through using decls when classifying implicit member access
Clang will now accept this valid C++11 code:
struct A { int field; };
struct B : A {
using A::field;
enum { TheSize = sizeof(field) };
};
Previously we would classify the 'field' reference as something other
than a field, and then forget to apply the C++11 rule to allow
non-static data member references in unevaluated contexts.
This usually arises in class templates that want to reference fields of
a dependent base in an unevaluated context outside of an instance
method. Such contexts do not allow references to 'this', so the only way
to access the field is with a using decl and an implicit member
reference.
llvm-svn: 250839
Diffstat (limited to 'llvm/tools/llvm-diff/DifferenceEngine.cpp')
0 files changed, 0 insertions, 0 deletions