From: Francois Pichet Date: Tue, 20 Sep 2011 22:08:26 +0000 (+0000) Subject: Move Microsoft access specifier bug emulation from -fms-extensions to -fm-compatibility. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cc6306e96782a8da2d818bfaca003645530ffd2f;p=clang Move Microsoft access specifier bug emulation from -fms-extensions to -fm-compatibility. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@140189 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaAccess.cpp b/lib/Sema/SemaAccess.cpp index db78680a13..e501a393d1 100644 --- a/lib/Sema/SemaAccess.cpp +++ b/lib/Sema/SemaAccess.cpp @@ -1270,7 +1270,7 @@ static AccessResult CheckEffectiveAccess(Sema &S, AccessTarget &Entity) { assert(Entity.getAccess() != AS_public && "called for public access!"); - if (S.getLangOptions().MicrosoftExt && + if (S.getLangOptions().MicrosoftMode && IsMicrosoftUsingDeclarationAccessBug(S, Loc, Entity)) return AR_accessible; diff --git a/test/SemaCXX/MicrosoftCompatibility.cpp b/test/SemaCXX/MicrosoftCompatibility.cpp index 98a7532f0c..4179ed81f3 100644 --- a/test/SemaCXX/MicrosoftCompatibility.cpp +++ b/test/SemaCXX/MicrosoftCompatibility.cpp @@ -70,3 +70,23 @@ int jump_over_indirect_goto() { +namespace ms_using_declaration_bug { + +class A { +public: + int f(); +}; + +class B : public A { +private: + using A::f; +}; + +class C : public B { +private: + using B::f; // expected-warning {{using declaration refers to inaccessible member 'ms_using_declaration_bug::B::f', which refers to accessible member 'ms_using_declaration_bug::A::f', accepted for Microsoft compatibility}} +}; + +} + + diff --git a/test/SemaCXX/MicrosoftExtensions.cpp b/test/SemaCXX/MicrosoftExtensions.cpp index e5e5752dba..1eb0c495f8 100644 --- a/test/SemaCXX/MicrosoftExtensions.cpp +++ b/test/SemaCXX/MicrosoftExtensions.cpp @@ -213,26 +213,6 @@ void pointer_to_integral_type_conv(char* ptr) { sh = (short)ptr; } -namespace ms_using_declaration_bug { - -class A { -public: - int f(); -}; - -class B : public A { -private: - using A::f; -}; - -class C : public B { -private: - using B::f; // expected-warning {{using declaration refers to inaccessible member 'ms_using_declaration_bug::B::f', which refers to accessible member 'ms_using_declaration_bug::A::f', accepted for Microsoft compatibility}} -}; - -} - - namespace friend_as_a_forward_decl {