// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -Wno-microsoft -std=c++11
__interface I1 ;
__interface I2 ;
// expected-error@+1 {{'final' keyword not permitted with interface types}}
__interface I3 final ;
__interface I4 : I1, I2 ;
// expected-error@+1 {{interface type cannot inherit from non-public interface 'I1'}}
__interface I5 : private I1 ;
__interface I6 : X ;
;
;
__interface I ;
;
static_assert;
static_assert;
static_assert;
static_assert;
// expected-error@55 {{interface type cannot inherit from struct 'S'}}
// expected-note@+1 {{in instantiation of template class 'I6<S>' requested here}}
;
// expected-error@55 {{interface type cannot inherit from class 'C'}}
// expected-note@+1 {{in instantiation of template class 'I6<C>' requested here}}
;
;
// MSVC makes a special case in that an interface is allowed to have a data
// member if it is a property.
__interface HasProp ;
;
;
__interface IFaceInheritsStruct : IFaceStruct ;
static_assert;
static_assert;
static_assert;
static_assert;
;