]> granicus.if.org Git - clang/commit
Move the -fms-compatibility using decl check after real access checking
authorReid Kleckner <reid@kleckner.net>
Sat, 8 Feb 2014 02:40:20 +0000 (02:40 +0000)
committerReid Kleckner <reid@kleckner.net>
Sat, 8 Feb 2014 02:40:20 +0000 (02:40 +0000)
commitda8b957aca16ce42731cc3e7d16abc63d8b77b95
tree4c331139238cd5954d26cff4d0f30c22200d31f3
parent98bbe6386faa1d58ade67efe280b1b54596863ea
Move the -fms-compatibility using decl check after real access checking

Summary:
This avoids false positives from -Wmicrosoft when name lookup would
normally succeed in standard C++.  This triggered on a common CRTP
pattern in clang, where a derived class would have a private using decl
to pull in members of a dependent base:

class Verifier : InstVisitor<Verifier> {
private:
  using InstVisitor<Verifier>::visit;
  ...
  void anything() {
    visit(); // warned here
  }
};

Real access checks pass here because we're in the context of the
Verifier, but the -Wmicrosoft extension was just looking for the private
access specifier.

Reviewers: rsmith

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2679

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@201019 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaAccess.cpp
test/SemaCXX/MicrosoftCompatibility.cpp