| // RUN: %empty-directory(%t) |
| // RUN: %build-irgen-test-overlays |
| // RUN: %target-swift-frontend(mock-sdk: -sdk %S/Inputs -I %t) %s -emit-ir | %FileCheck %s |
| |
| // REQUIRES: CPU=i386 || CPU=x86_64 |
| // REQUIRES: objc_interop |
| |
| import Builtin |
| import Swift |
| import gizmo |
| |
| // CHECK: @"$s20generic_classes_objc19GenericInheritsObjCCMP" |
| |
| class GenericInheritsObjC<D> : Gizmo { |
| var a : Int |
| var x : D |
| var z : Int |
| |
| override init() |
| } |
| sil_vtable GenericInheritsObjC {} |
| |
| // __deallocating_deinit |
| sil @$s20generic_classes_objc19GenericInheritsObjCCfD : $@convention(method) <T> (GenericInheritsObjC<T>) -> () { |
| bb0(%0 : $GenericInheritsObjC<T>): |
| unreachable |
| } |
| |
| // @objc init |
| sil @$s20generic_classes_objc19GenericInheritsObjCCACyxGycfcTo : $@convention(objc_method) <T> (@owned GenericInheritsObjC<T>) -> @owned GenericInheritsObjC<T> { |
| bb0(%0 : $GenericInheritsObjC<T>): |
| unreachable |
| } |
| |
| sil @$s20generic_classes_objc19GenericInheritsObjCC7bellsOnACyxGSgSi_tcfcTo : $@convention(objc_method) <T> (Int, @owned GenericInheritsObjC<T>) -> @owned GenericInheritsObjC<T> { |
| bb0(%0 : $Int, %1 : $GenericInheritsObjC<T>): |
| unreachable |
| } |
| |
| // CHECK: @"$s20generic_classes_objc20GenericInheritsObjC2CMP" |
| |
| class GenericInheritsObjC2<E> : Gizmo { |
| var x : UInt8 |
| var y : E |
| var z : UInt8 |
| |
| override init() |
| } |
| sil_vtable GenericInheritsObjC2 {} |
| |
| // __deallocating_deinit |
| sil @$s20generic_classes_objc20GenericInheritsObjC2CfD : $@convention(method) <T> (GenericInheritsObjC2<T>) -> () { |
| bb0(%0 : $GenericInheritsObjC2<T>): |
| unreachable |
| } |
| |
| // @objc init |
| sil @$s20generic_classes_objc20GenericInheritsObjC2CACyxGycfcTo : $@convention(objc_method) <T> (@owned GenericInheritsObjC2<T>) -> @owned GenericInheritsObjC2<T> { |
| bb0(%0 : $GenericInheritsObjC2<T>): |
| unreachable |
| } |
| |
| sil @$s20generic_classes_objc20GenericInheritsObjC2C7bellsOnACyxGSgSi_tcfcTo : $@convention(objc_method) <T> (Int, @owned GenericInheritsObjC<T>) -> @owned GenericInheritsObjC<T> { |
| bb0(%0 : $Int, %1 : $GenericInheritsObjC<T>): |
| unreachable |
| } |
| |
| @objc protocol P1 { } |
| protocol P2 { } |
| |
| // CHECK: @"$s20generic_classes_objc16Generic3WithReqsCMn" = hidden constant |
| // CHECK-SAME: i16 3, i16 3, i16 5, i16 0 |
| class Generic3WithReqs<T: P1, U: P2, V: P2> { } |
| sil_vtable Generic3WithReqs { } |
| |
| |
| class SomeClass{} |
| sil_vtable SomeClass {} |
| |
| // This used to assert. |
| sil @repo : $@convention(thin) (@guaranteed Optional< @callee_guaranteed @substituted <τ_0_1> (@in_guaranteed Result<τ_0_1, Error>) -> () for <ObjcGenericClass<SomeClass>>>) -> () { |
| bb0(%0 : $Optional< @callee_guaranteed @substituted <τ_0_1> (@in_guaranteed Result<τ_0_1, Error>) -> () for <ObjcGenericClass<SomeClass>> >): |
| debug_value %0 : $Optional<@callee_guaranteed @substituted <τ_0_1> (@in_guaranteed Result<τ_0_1, Error>) -> () for <ObjcGenericClass<SomeClass>>>, let, name "completion", argno 1 |
| %2 = tuple () |
| return %2 : $() |
| } |
| |
| struct PlainGeneric<T> {} |
| |
| // This used to assert. |
| sil @repo2 : $@convention(thin) (@guaranteed Optional< @callee_guaranteed @substituted <τ_0_1> (@in_guaranteed Result<τ_0_1, Error>) -> () for <PlainGeneric<ObjcGenericClass<SomeClass>>>>) -> () { |
| bb0(%0 : $Optional< @callee_guaranteed @substituted <τ_0_1> (@in_guaranteed Result<τ_0_1, Error>) -> () for <PlainGeneric<ObjcGenericClass<SomeClass>>> >): |
| debug_value %0 : $Optional<@callee_guaranteed @substituted <τ_0_1> (@in_guaranteed Result<τ_0_1, Error>) -> () for <PlainGeneric<ObjcGenericClass<SomeClass>>>>, let, name "completion", argno 1 |
| %2 = tuple () |
| return %2 : $() |
| } |