summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/DiagnosticSemaKinds.td3
-rw-r--r--clang/lib/Sema/SemaCast.cpp9
-rw-r--r--clang/test/SemaCXX/ext_ms_downcast.cpp40
3 files changed, 4 insertions, 48 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index afa741077c3..b04abc55afb 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -5764,9 +5764,6 @@ def err_static_downcast_via_virtual : Error<
"cannot cast %0 to %1 via virtual base %2">;
def err_downcast_from_inaccessible_base : Error<
"cannot cast %select{private|protected}2 base class %1 to %0">;
-def ext_ms_downcast_from_inaccessible_base : ExtWarn<
- "casting from %select{private|protected}2 base class %1 to derived class %0 is a Microsoft extension">,
- InGroup<MicrosoftCast>;
def err_upcast_to_inaccessible_base : Error<
"cannot cast %0 to its %select{private|protected}2 base class %1">;
def err_bad_dynamic_cast_not_ref_or_ptr : Error<
diff --git a/clang/lib/Sema/SemaCast.cpp b/clang/lib/Sema/SemaCast.cpp
index 84a070573f5..4a7699b22e2 100644
--- a/clang/lib/Sema/SemaCast.cpp
+++ b/clang/lib/Sema/SemaCast.cpp
@@ -1344,11 +1344,10 @@ TryStaticDowncast(Sema &Self, CanQualType SrcType, CanQualType DestType,
}
if (!CStyle) {
- unsigned Diag = Self.getLangOpts().MSVCCompat
- ? diag::ext_ms_downcast_from_inaccessible_base
- : diag::err_downcast_from_inaccessible_base;
- switch (Self.CheckBaseClassAccess(OpRange.getBegin(), SrcType, DestType,
- Paths.front(), Diag)) {
+ switch (Self.CheckBaseClassAccess(OpRange.getBegin(),
+ SrcType, DestType,
+ Paths.front(),
+ diag::err_downcast_from_inaccessible_base)) {
case Sema::AR_accessible:
case Sema::AR_delayed: // be optimistic
case Sema::AR_dependent: // be optimistic
diff --git a/clang/test/SemaCXX/ext_ms_downcast.cpp b/clang/test/SemaCXX/ext_ms_downcast.cpp
deleted file mode 100644
index 42feeb4b8cf..00000000000
--- a/clang/test/SemaCXX/ext_ms_downcast.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: %clang_cc1 -fsyntax-only -fms-compatibility -verify %s
-// RUN: %clang_cc1 -fsyntax-only -DNO_MS_COMPATIBILITY -verify %s
-
-// Minimal reproducer.
-class A {};
-class B : A {}; // expected-note 2 {{implicitly declared private here}}
-
-B* foo(A* p) {
- return static_cast<B*>(p);
-#ifdef NO_MS_COMPATIBILITY
- // expected-error@-2 {{cannot cast private base class 'A' to 'B'}}
-#else
- // expected-warning@-4 {{casting from private base class 'A' to derived class 'B' is a Microsoft extension}}
-#endif
-}
-
-A* bar(B* p) {
- return static_cast<A*>(p); // expected-error {{cannot cast 'B' to its private base class 'A'}}
-}
-
-// from atlframe.h
-template <class T>
-class CUpdateUI {
-public:
- CUpdateUI() {
- T* pT = static_cast<T*>(this);
-#ifdef NO_MS_COMPATIBILITY
- // expected-error@-2 {{cannot cast private base class}}
-#else
- // expected-warning@-4 {{casting from private base class 'CUpdateUI<CMDIFrame>' to derived class 'CMDIFrame' is a Microsoft extension}}
-#endif
- }
-};
-
-// from sample WTL/MDIDocVw (mainfrm.h
-class CMDIFrame : CUpdateUI<CMDIFrame> {};
-// expected-note@-1 {{implicitly declared private here}}
-// expected-note@-2 {{in instantiation of member function}}
-
-CMDIFrame wndMain;
OpenPOWER on IntegriCloud