blob: 09d0634ceba3430b357c10fc86a19ce69595cb4e [file] [log] [blame]
// RUN: %target-sil-opt -enable-sil-verify-all -module-name="SILDeclRef" %s
// Check that SILDeclRefs with interface types can be parsed properly.
sil_stage canonical
import Builtin
import Swift
import SwiftShims
public protocol P {
func foo() -> Int32
func foo(n: Int32)
}
extension P {
func boo() -> Int32
}
public class Base : P {
public func foo() -> Int32
public func foo(n: Int32)
public func foo(f: Float) -> Int32
deinit
init()
}
public class Derived1 : Base {
override public func foo() -> Int32
override public func foo(n: Int32)
override public func foo(f: Float) -> Int32
deinit
override init()
}
public class Derived2 : Base {
override public func foo() -> Int32
override public func foo(n: Int32)
override public func foo(f: Float) -> Int32
deinit
override init()
}
public func testP(p: P) -> Int32
public func testBase(b: Base) -> Int32
// P.boo() -> Int32
sil @_TFE10SILDeclRefPS_1P3boofT_Vs5Int32 : $@convention(method) <Self where Self : P> (@in_guaranteed Self) -> Int32
// Int32.init(_builtinIntegerLiteral : Builtin.IntLiteral) -> Int32
sil public_external [transparent] [serialized] @_TFVs5Int32CfT22_builtinIntegerLiteralBI__S_ : $@convention(method) (Builtin.IntLiteral, @thin Int32.Type) -> Int32
// Base.foo() -> Int32
sil @_TFC10SILDeclRef4Base3foofT_Vs5Int32 : $@convention(method) (@guaranteed Base) -> Int32
// Base.foo(n : Int32) -> ()
sil @_TFC10SILDeclRef4Base3foofT1nVs5Int32_T_ : $@convention(method) (Int32, @guaranteed Base) -> ()
// Base.foo(f : Float) -> Int32
sil @_TFC10SILDeclRef4Base3foofT1fSf_Vs5Int32 : $@convention(method) (Float, @guaranteed Base) -> Int32
// Base.__deallocating_deinit
sil @_TFC10SILDeclRef4BaseD : $@convention(method) (@owned Base) -> ()
// Base.deinit
sil @_TFC10SILDeclRef4Based : $@convention(method) (@guaranteed Base) -> @owned Builtin.NativeObject
// Base.init() -> Base
sil @_TFC10SILDeclRef4BasecfT_S0_ : $@convention(method) (@owned Base) -> @owned Base
// protocol witness for P.foo() -> Int32 in conformance Base
sil [transparent] [thunk] @_TTWC10SILDeclRef4BaseS_1PS_FS1_3foofT_Vs5Int32 : $@convention(witness_method: P) (@in_guaranteed Base) -> Int32
// protocol witness for P.foo(n : Int32) -> () in conformance Base
sil [transparent] [thunk] @_TTWC10SILDeclRef4BaseS_1PS_FS1_3foofT1nVs5Int32_T_ : $@convention(witness_method: P) (Int32, @in_guaranteed Base) -> ()
// Derived1.foo() -> Int32
sil @_TFC10SILDeclRef8Derived13foofT_Vs5Int32 : $@convention(method) (@guaranteed Derived1) -> Int32
// Derived1.foo(n : Int32) -> ()
sil @_TFC10SILDeclRef8Derived13foofT1nVs5Int32_T_ : $@convention(method) (Int32, @guaranteed Derived1) -> ()
// Derived1.foo(f : Float) -> Int32
sil @_TFC10SILDeclRef8Derived13foofT1fSf_Vs5Int32 : $@convention(method) (Float, @guaranteed Derived1) -> Int32
// Derived1.__deallocating_deinit
sil @_TFC10SILDeclRef8Derived1D : $@convention(method) (@owned Derived1) -> ()
// Derived1.deinit
sil @_TFC10SILDeclRef8Derived1d : $@convention(method) (@guaranteed Derived1) -> @owned Builtin.NativeObject
// Derived1.init() -> Derived1
sil @_TFC10SILDeclRef8Derived1cfT_S0_ : $@convention(method) (@owned Derived1) -> @owned Derived1
// Derived2.foo() -> Int32
sil @_TFC10SILDeclRef8Derived23foofT_Vs5Int32 : $@convention(method) (@guaranteed Derived2) -> Int32
// Derived2.foo(n : Int32) -> ()
sil @_TFC10SILDeclRef8Derived23foofT1nVs5Int32_T_ : $@convention(method) (Int32, @guaranteed Derived2) -> ()
// Derived2.foo(f : Float) -> Int32
sil @_TFC10SILDeclRef8Derived23foofT1fSf_Vs5Int32 : $@convention(method) (Float, @guaranteed Derived2) -> Int32
// Derived2.__deallocating_deinit
sil @_TFC10SILDeclRef8Derived2D : $@convention(method) (@owned Derived2) -> ()
// Derived2.deinit
sil @_TFC10SILDeclRef8Derived2d : $@convention(method) (@guaranteed Derived2) -> @owned Builtin.NativeObject
// Derived2.init() -> Derived2
sil @_TFC10SILDeclRef8Derived2cfT_S0_ : $@convention(method) (@owned Derived2) -> @owned Derived2
// testP(p : P) -> Int32
sil @_TF10SILDeclRef5testPFT1pPS_1P__Vs5Int32 : $@convention(thin) (@in P) -> Int32
// testBase(b : Base) -> Int32
sil @_TF10SILDeclRef8testBaseFT1bCS_4Base_Vs5Int32 : $@convention(thin) (@owned Base) -> Int32
sil_vtable Derived1 {
#Base.foo!1: (Base) -> () -> Int32 : @_TFC10SILDeclRef8Derived13foofT_Vs5Int32 // Derived1.foo() -> Int32
#Base.foo!1: (Base) -> (Int32) -> () : @_TFC10SILDeclRef8Derived13foofT1nVs5Int32_T_ // Derived1.foo(n : Int32) -> ()
#Base.foo!1: (Base) -> (Float) -> Int32 : @_TFC10SILDeclRef8Derived13foofT1fSf_Vs5Int32 // Derived1.foo(f : Float) -> Int32
#Base.init!initializer.1: (Base.Type) -> () -> Base : @_TFC10SILDeclRef8Derived1cfT_S0_ // Derived1.init() -> Derived1
#Derived1.deinit!deallocator.1: (Derived1) -> () -> () : @_TFC10SILDeclRef8Derived1D // Derived1.__deallocating_deinit
}
sil_vtable Derived2 {
#Base.foo!1: (Base) -> () -> Int32 : @_TFC10SILDeclRef8Derived23foofT_Vs5Int32 // Derived2.foo() -> Int32
#Base.foo!1: (Base) -> (Int32) -> () : @_TFC10SILDeclRef8Derived23foofT1nVs5Int32_T_ // Derived2.foo(n : Int32) -> ()
#Base.foo!1: (Base) -> (Float) -> Int32 : @_TFC10SILDeclRef8Derived23foofT1fSf_Vs5Int32 // Derived2.foo(f : Float) -> Int32
#Base.init!initializer.1: (Base.Type) -> () -> Base : @_TFC10SILDeclRef8Derived2cfT_S0_ // Derived2.init() -> Derived2
#Derived2.deinit!deallocator.1: (Derived2) -> () -> () : @_TFC10SILDeclRef8Derived2D // Derived2.__deallocating_deinit
}
sil_witness_table [serialized] Base: P module SILDeclRef {
method #P.foo!1: <Self where Self : P> (Self) -> () -> Int32 : @_TTWC10SILDeclRef4BaseS_1PS_FS1_3foofT_Vs5Int32 // protocol witness for P.foo() -> Int32 in conformance Base
method #P.foo!1: <Self where Self : P> (Self) -> (Int32) -> () : @_TTWC10SILDeclRef4BaseS_1PS_FS1_3foofT1nVs5Int32_T_ // protocol witness for P.foo(n : Int32) -> () in conformance Base
}
sil_default_witness_table P {
no_default
no_default
}