// 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 : Gizmo { var a : Int var x : D var z : Int override init() } sil_vtable GenericInheritsObjC {} // __deallocating_deinit sil @$s20generic_classes_objc19GenericInheritsObjCCfD : $@convention(method) (GenericInheritsObjC) -> () { bb0(%0 : $GenericInheritsObjC): unreachable } // @objc init sil @$s20generic_classes_objc19GenericInheritsObjCCACyxGycfcTo : $@convention(objc_method) (@owned GenericInheritsObjC) -> @owned GenericInheritsObjC { bb0(%0 : $GenericInheritsObjC): unreachable } sil @$s20generic_classes_objc19GenericInheritsObjCC7bellsOnACyxGSgSi_tcfcTo : $@convention(objc_method) (Int, @owned GenericInheritsObjC) -> @owned GenericInheritsObjC { bb0(%0 : $Int, %1 : $GenericInheritsObjC): unreachable } // CHECK: @"$s20generic_classes_objc20GenericInheritsObjC2CMP" class GenericInheritsObjC2 : Gizmo { var x : UInt8 var y : E var z : UInt8 override init() } sil_vtable GenericInheritsObjC2 {} // __deallocating_deinit sil @$s20generic_classes_objc20GenericInheritsObjC2CfD : $@convention(method) (GenericInheritsObjC2) -> () { bb0(%0 : $GenericInheritsObjC2): unreachable } // @objc init sil @$s20generic_classes_objc20GenericInheritsObjC2CACyxGycfcTo : $@convention(objc_method) (@owned GenericInheritsObjC2) -> @owned GenericInheritsObjC2 { bb0(%0 : $GenericInheritsObjC2): unreachable } sil @$s20generic_classes_objc20GenericInheritsObjC2C7bellsOnACyxGSgSi_tcfcTo : $@convention(objc_method) (Int, @owned GenericInheritsObjC) -> @owned GenericInheritsObjC { bb0(%0 : $Int, %1 : $GenericInheritsObjC): unreachable } @objc protocol P1 { } protocol P2 { } // CHECK: @"$s20generic_classes_objc16Generic3WithReqsCMn" = hidden constant // CHECK-SAME: i16 3, i16 3, i16 5, i16 0 class Generic3WithReqs { } sil_vtable Generic3WithReqs { } class SomeClass{} sil_vtable SomeClass {} // This used to assert. sil @repo : $@convention(thin) (@guaranteed Optional< @callee_guaranteed @substituted <τ_0_1 where τ_0_1 : Copyable, τ_0_1 : Escapable> (@in_guaranteed Result<τ_0_1, Error>) -> () for >>) -> () { bb0(%0 : $Optional< @callee_guaranteed @substituted <τ_0_1 where τ_0_1 : Copyable, τ_0_1 : Escapable> (@in_guaranteed Result<τ_0_1, Error>) -> () for > >): debug_value %0 : $Optional<@callee_guaranteed @substituted <τ_0_1 where τ_0_1 : Copyable, τ_0_1 : Escapable> (@in_guaranteed Result<τ_0_1, Error>) -> () for >>, let, name "completion", argno 1 %2 = tuple () return %2 : $() } struct PlainGeneric {} // This used to assert. sil @repo2 : $@convention(thin) (@guaranteed Optional< @callee_guaranteed @substituted <τ_0_1 where τ_0_1 : Copyable, τ_0_1 : Escapable> (@in_guaranteed Result<τ_0_1, Error>) -> () for >>>) -> () { bb0(%0 : $Optional< @callee_guaranteed @substituted <τ_0_1 where τ_0_1 : Copyable, τ_0_1 : Escapable> (@in_guaranteed Result<τ_0_1, Error>) -> () for >> >): debug_value %0 : $Optional<@callee_guaranteed @substituted <τ_0_1 where τ_0_1 : Copyable, τ_0_1 : Escapable> (@in_guaranteed Result<τ_0_1, Error>) -> () for >>>, let, name "completion", argno 1 %2 = tuple () return %2 : $() }