blob: df05d6042f8fdc7306e3d0a5f2e891e7da87b246 [file] [log] [blame]
// ---------------------------------------------------------------------------
// Multiple explicit conformances to the same protocol
// ---------------------------------------------------------------------------
extension MFExplicit1 : P1 { }
struct MFExplicit2 : P1 { } // expected-note{{'MFExplicit2' declares conformance to protocol 'P1' here}}
// ---------------------------------------------------------------------------
// Multiple implicit conformances, with no ambiguities
// ---------------------------------------------------------------------------
struct MFMultipleImplicit1 : P2a { }
struct MFMultipleImplicit3 : P4 { }
struct MFMultipleImplicit4 : P4 { }
struct MFMultipleImplicit5 : P2a { }
// ---------------------------------------------------------------------------
// Explicit conformances conflicting with inherited conformances
// ---------------------------------------------------------------------------
class MFExplicitSub1 : ImplicitSuper1 { } // expected-note{{'MFExplicitSub1' inherits conformance to protocol 'P1' from superclass here}}
// ---------------------------------------------------------------------------
// Suppression of synthesized conformances
// ---------------------------------------------------------------------------
class MFSynthesizedClass2 { }
class MFSynthesizedClass3 : AnyObjectRefinement { }
class MFSynthesizedSubClass2 : MFSynthesizedClass2 { }
class MFSynthesizedSubClass3 : MFSynthesizedClass1 { }
extension MFSynthesizedSubClass4 : AnyObjectRefinement { }
enum MFSynthesizedEnum1 : Int { case a }
extension MFSynthesizedEnum2 : RawRepresentable { }