| // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -parse-as-library -verify -swift-version 3 %s |
| |
| // REQUIRES: objc_interop |
| |
| import Foundation |
| import objc_generics |
| |
| // Test type-erased bounds |
| |
| func getContainerForPanda() -> AnimalContainer<Animal> { |
| return Panda.getContainer() |
| } |
| |
| // Note that in Swift 3, there's basically no way to call the |
| // Panda.getFungibleContainer() method, because it is imported |
| // with a malformed type. |
| |
| // expected-error@+1 {{type 'Animal' does not conform to protocol 'Fungible'}} |
| func getContainerForFungiblePanda() -> FungibleAnimalContainer<Animal> { |
| return Panda.getFungibleContainer() |
| } |
| |
| |
| func getContainerForFungiblePanda() -> FungibleAnimalContainer<Animal & Fungible> { |
| // expected-error@+1 {{cannot convert return expression of type 'FungibleAnimalContainer<Animal>!' to return type 'FungibleAnimalContainer<Animal & Fungible>'}} |
| return Panda.getFungibleContainer() |
| } |