Skip to content

Commit 04a22f3

Browse files
committed
IRGen: Avoid emitting Obj-C method metadata for unavailable methods.
Resolves rdar://109911571
1 parent af1df92 commit 04a22f3

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

lib/IRGen/GenClass.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -1831,6 +1831,9 @@ namespace {
18311831

18321832
void buildMethod(ConstantArrayBuilder &descriptors,
18331833
AbstractFunctionDecl *method) {
1834+
if (Lowering::shouldSkipLowering(method))
1835+
return;
1836+
18341837
auto accessor = dyn_cast<AccessorDecl>(method);
18351838
if (!accessor)
18361839
return emitObjCMethodDescriptor(IGM, descriptors, method);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library -module-name Test -validate-tbd-against-ir=missing %s -emit-ir | %FileCheck %s --check-prefixes=CHECK,CHECK-NO-STRIP
2+
3+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library -module-name Test -validate-tbd-against-ir=missing -unavailable-decl-optimization=complete %s -emit-ir | %FileCheck %s --check-prefixes=CHECK,CHECK-STRIP
4+
5+
// REQUIRES: objc_interop
6+
7+
import Foundation
8+
9+
public class Class: NSObject {
10+
// CHECK-NO-STRIP: define {{.*}} @"$s4Test5ClassC3fooyyF"
11+
// CHECK-STRIP-NOT: define {{.*}} @"$s4Test5ClassC3fooyyF"
12+
13+
// CHECK-NO-STRIP: define {{.*}} @"$s4Test5ClassC3fooyyFTo"
14+
// CHECK-STRIP-NOT: define {{.*}} @"$s4Test5ClassC3fooyyFTo"
15+
@available(*, unavailable)
16+
@objc public func foo() {}
17+
}

0 commit comments

Comments
 (0)