Files
swift-mirror/validation-test/Evolution/test_conformance_reference.swift
2019-03-20 14:34:01 -07:00

43 lines
1.0 KiB
Swift

// RUN: %target-resilience-test --no-symbol-diff
// REQUIRES: executable_test
// Uses swift-version 4.
// UNSUPPORTED: swift_test_mode_optimize_none_with_implicit_dynamic
import StdlibUnittest
import conformance_reference
var ConformanceReferenceTest = TestSuite("ConformanceReference")
func useBase<T : BaseProtocol>(_: T) {}
ConformanceReferenceTest.test("BaseConformance") {
useBase(FirstGeneric<Int>())
useBase(SecondGeneric<Int>())
}
func useDerived<T : DerivedProtocol>(_: T) {}
ConformanceReferenceTest.test("DerivedConformance") {
useDerived(SecondGeneric<Int>())
}
protocol EvenMoreDerivedProtocol : DerivedProtocol {}
extension FirstGeneric : EvenMoreDerivedProtocol {}
func useEvenMoreDerived<T : EvenMoreDerivedProtocol>(_ t: T) -> Any.Type {
return t.getMeAType()
}
ConformanceReferenceTest.test("EvenMoreDerivedConformance") {
expectTrue(FirstGeneric<Int>.self == useEvenMoreDerived(FirstGeneric<Int>()))
expectTrue(FirstGeneric<String>.self == useEvenMoreDerived(FirstGeneric<String>()))
}
runAllTests()