blob: 0e02c9e91466201a837e4bfeef5e771a286406a7 [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
// ---------------------------------------------------------------------------
extension MFSynthesizedClass1 : AnyObject { }
class MFSynthesizedClass2 { }
class MFSynthesizedClass3 : AnyObjectRefinement { }
class MFSynthesizedSubClass2 : MFSynthesizedClass2 { } // expected-note{{'MFSynthesizedSubClass2' inherits conformance to protocol 'AnyObject' from superclass here}}
class MFSynthesizedSubClass3 : MFSynthesizedClass1 { }
extension MFSynthesizedSubClass4 : AnyObjectRefinement { }
enum MFSynthesizedEnum1 : Int { case a }
extension MFSynthesizedEnum2 : RawRepresentable { }