diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-04-10 10:14:54 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2010-04-10 10:14:54 +0000 |
commit | c72350ea9ff3d0df5206130c36fdb81f23b972da (patch) | |
tree | a651cac8193b34aaca44d92e99ad7cd7cb913a14 /clang/lib | |
parent | e2f3524f83dbde06ddce0fb62236e96e28789dbd (diff) | |
download | bcm5719-llvm-c72350ea9ff3d0df5206130c36fdb81f23b972da.tar.gz bcm5719-llvm-c72350ea9ff3d0df5206130c36fdb81f23b972da.zip |
When a member pointer is dereferenced, the class it points into must be complete. Enforce this.
llvm-svn: 100925
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp index 7efba3ab67f..04b3d83f3e3 100644 --- a/clang/lib/Sema/SemaExprCXX.cpp +++ b/clang/lib/Sema/SemaExprCXX.cpp @@ -1847,6 +1847,9 @@ QualType Sema::CheckPointerToMemberOperands( QualType Class(MemPtr->getClass(), 0); + if (RequireCompleteType(Loc, Class, diag::err_memptr_rhs_to_incomplete)) + return QualType(); + // C++ 5.5p2 // [...] to its first operand, which shall be of class T or of a class of // which T is an unambiguous and accessible base class. [p3: a pointer to |