blob: cf1f11ff9b88bc438b2a8a69ba338a4d908915d0 [file] [log] [blame]
public class Object {
public init() {}
}
public class Subclass : Object {}
open class Base<T> {
open func takesT(_: T) {}
open func takesInt(_: Int) {}
open func takesReference(_: Object) {}
open func returnsSuperclass() -> Object {
fatalError()
}
}
open class Derived : Base<Int> {
// Re-abstraction required, no new vtable entry
open override func takesT(_: Int) {}
// New vtable entry
open override func takesInt(_: Int?) {}
// Override has different formal type but is ABI-compatible
open override func takesReference(_: Object?) {}
// Override has a more specific return type but is ABI-compatible
open override func returnsSuperclass() -> Subclass {
fatalError()
}
}