| // 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=x86_64 |
| // REQUIRES: objc_interop |
| |
| // CHECK: [[SGIZMO:%T19objc_attr_NSManaged10SwiftGizmoC]] = type |
| |
| import Builtin |
| import Swift |
| import gizmo |
| import Foundation |
| |
| @objc class X : NSObject { |
| } |
| sil_vtable X {} |
| |
| // The getter/setter should not show up in the Objective-C metadata. |
| // CHECK: @_INSTANCE_METHODS__TtC19objc_attr_NSManaged10SwiftGizmo = private constant { i32, i32, [2 x { i8*, i8*, i8* }] } { i32 24, i32 2, {{.*}} @"\01L_selector_data(initWithBellsOn:)", {{.*}} @"\01L_selector_data(init)", |
| |
| // CHECK: [[X:@[0-9]+]] = private unnamed_addr constant [2 x i8] c"x\00" |
| |
| // The property 'x' should show up in the Objective-C metadata. |
| // CHECK: @_PROPERTIES__TtC19objc_attr_NSManaged10SwiftGizmo = private constant { {{.*}}i32, i32, [1 x { i8*, i8* }] } { i32 16, i32 1, [1 x { i8*, i8* }] [{ i8*, i8* } { i8* getelementptr inbounds ([2 x i8], [2 x i8]* [[X]], i64 0, i64 0), |
| |
| // The getter/setter should not show up in the Swift metadata. |
| /* FIXME: sil_vtable parser picks the wrong 'init' overload. Both vtable entries |
| ought to be nonnull here. rdar://problem/19572342 */ |
| // CHECK: @"$S19objc_attr_NSManaged10SwiftGizmoCMf" = internal global <{ {{.*}} }> <{ void (%T19objc_attr_NSManaged10SwiftGizmoC*)* @"$S19objc_attr_NSManaged10SwiftGizmoCfD", i8** @"$SBOWV", i64 ptrtoint (%objc_class* @"OBJC_METACLASS_$__TtC19objc_attr_NSManaged10SwiftGizmo" to i64), %objc_class* @"OBJC_CLASS_$_Gizmo", %swift.opaque* @_objc_empty_cache, %swift.opaque* null, i64 add (i64 ptrtoint ({ i32, i32, i32, i32, i8*, i8*, { i32, i32, [2 x { i8*, i8*, i8* }] }*, i8*, i8*, i8*, { i32, i32, [1 x { i8*, i8* }] }* }* @_DATA__TtC19objc_attr_NSManaged10SwiftGizmo to i64), i64 {{1|2}}), i32 {{1|0}}, i32 0, i32 8, i16 7, i16 0, i32 112, i32 16, {{.*}}* @"$S19objc_attr_NSManaged10SwiftGizmoCMn", i8* null, %T19objc_attr_NSManaged10SwiftGizmoC* (i64, %T19objc_attr_NSManaged10SwiftGizmoC*)* @"$S19objc_attr_NSManaged10SwiftGizmoC7bellsOnACSi_tcfc", i8* bitcast (void ()* @swift_deletedMethodError to i8*) }> |
| |
| @objc class SwiftGizmo : Gizmo { |
| @objc @NSManaged var x: X |
| @objc @NSManaged func kvc() |
| } |
| sil @$S19objc_attr_NSManaged1XCACycfcTo : $@convention(objc_method) (@owned X) -> @owned X { |
| bb0(%0 : $X): |
| return %0 : $X |
| } |
| |
| sil @$S19objc_attr_NSManaged10SwiftGizmoCACycfcTo : $@convention(objc_method) (@owned SwiftGizmo) -> @owned SwiftGizmo { |
| bb0(%0 : $SwiftGizmo): |
| return %0 : $SwiftGizmo |
| } |
| |
| sil @$S19objc_attr_NSManaged10SwiftGizmoC7bellsOnACSgSi_tcfcTo : $@convention(objc_method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo? { |
| bb0(%0 : $Int, %1 : $SwiftGizmo): |
| unreachable |
| } |
| |
| sil @$S19objc_attr_NSManaged10SwiftGizmoCACycfc : $@convention(method) (@owned SwiftGizmo) -> @owned SwiftGizmo { |
| bb0(%0 : $SwiftGizmo): |
| return %0 : $SwiftGizmo |
| } |
| |
| sil @$S19objc_attr_NSManaged10SwiftGizmoC7bellsOnACSi_tcfc : $@convention(method) (Int, @owned SwiftGizmo) -> @owned SwiftGizmo { |
| bb0(%0 : $Int, %1 : $SwiftGizmo): |
| return %1 : $SwiftGizmo |
| } |
| |
| sil @$S19objc_attr_NSManaged10SwiftGizmoCfD : $@convention(method) (@owned SwiftGizmo) -> () |
| |
| sil @$S19objc_attr_NSManaged10SwiftGizmoC7bellsOnSQyACGSi_tcfc : $@convention(method) (Int, @owned SwiftGizmo) -> Int |
| |
| /* FIXME: sil_vtable parser picks the wrong 'init' overload. rdar://problem/19572342 */ |
| sil_vtable SwiftGizmo { |
| // #SwiftGizmo.init!initializer.1: $S19objc_attr_NSManaged10SwiftGizmoCACycfc |
| #SwiftGizmo.init!initializer.1: @$S19objc_attr_NSManaged10SwiftGizmoC7bellsOnACSi_tcfc |
| } |