Permalink
Browse files

As per John McCall comment:

Follow up to r154924: check that we are in a static CMethodDecl to enable the Microsoft bug emulation regarding access to protected member during PTM creation. Not just any static function.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154982 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information...
1 parent 3acf764 commit 2d01f2c414b8ef2ae23620ce6c9d3763c8bf73bf @fpichet fpichet committed Apr 18, 2012
Showing with 4 additions and 4 deletions.
  1. +4 −4 lib/Sema/SemaAccess.cpp
View
@@ -781,10 +781,10 @@ static AccessResult HasAccess(Sema &S,
// Emulate a MSVC bug where the creation of pointer-to-member
// to protected member of base class is allowed but only from
- // a static function.
- if (S.getLangOpts().MicrosoftMode && !EC.Functions.empty() &&
- EC.Functions.front()->getStorageClass() == SC_Static)
- return AR_accessible;
+ // a static function member functions.
+ if (S.getLangOpts().MicrosoftMode && !EC.Functions.empty())
+ if (CXXMethodDecl* MD = dyn_cast<CXXMethodDecl>(EC.Functions.front()))
+ if (MD->isStatic()) return AR_accessible;
// Despite the standard's confident wording, there is a case
// where you can have an instance member that's neither in a

0 comments on commit 2d01f2c

Please sign in to comment.