Files
swift-mirror/validation-test/Evolution/test_conformance_reference.swift
Slava Pestov 71ab1bbe77 IRGen: Fix isResilientConformance() check
If the conforming type is generic, we have to treat the conformance as
resilient if it is defined outside of the current module.

This is because it can resiliently change from being non-dependent
to dependent.
2019-02-20 20:00:46 -05:00

39 lines
952 B
Swift

// RUN: %target-resilience-test --no-symbol-diff
// REQUIRES: executable_test
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()