| // --------------------------------------------------------------------------- |
| // 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 { } |
| |