Don't die when a member access refers to a non-class member via a

qualified name. Fixes <rdar://problem/8231724>.

llvm-svn: 109682
This commit is contained in:
Douglas Gregor 2010-07-28 22:27:52 +00:00
parent 4c1e484f39
commit a9c3e82755
2 changed files with 17 additions and 0 deletions

View File

@ -2632,6 +2632,9 @@ bool Sema::CheckQualifiedMemberReference(Expr *BaseExpr,
while (DC->isTransparentContext())
DC = DC->getParent();
if (!DC->isRecord())
continue;
llvm::SmallPtrSet<CXXRecordDecl*,4> MemberRecord;
MemberRecord.insert(cast<CXXRecordDecl>(DC)->getCanonicalDecl());

View File

@ -101,3 +101,17 @@ namespace PR7508 {
a.PopCleanupScope(); // expected-error{{no member named 'PopCleanupScope' in 'PR7508::A'}}
}
}
namespace rdar8231724 {
namespace N {
template<typename T> struct X1;
int i;
}
struct X { };
struct Y : X { };
void f(Y *y) {
y->N::X1<int>; // expected-error{{'rdar8231724::N::X1' is not a member of class 'rdar8231724::Y'}}
}
}