Skip to content

Commit 3b9dbd5

Browse files
[AST] Get the ObjC accessor name, not the one parsed from Swift.
Fixes rdar://problem/55519276.
1 parent d4bafdf commit 3b9dbd5

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

lib/AST/Decl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4930,7 +4930,7 @@ getNameFromObjcAttribute(const ObjCAttr *attr, DeclName preferredName) {
49304930
ObjCSelector
49314931
AbstractStorageDecl::getObjCGetterSelector(Identifier preferredName) const {
49324932
// If the getter has an @objc attribute with a name, use that.
4933-
if (auto getter = getParsedAccessor(AccessorKind::Get)) {
4933+
if (auto getter = getAccessor(AccessorKind::Get)) {
49344934
if (auto name = getNameFromObjcAttribute(getter->getAttrs().
49354935
getAttribute<ObjCAttr>(), preferredName))
49364936
return *name;
@@ -4960,7 +4960,7 @@ AbstractStorageDecl::getObjCGetterSelector(Identifier preferredName) const {
49604960
ObjCSelector
49614961
AbstractStorageDecl::getObjCSetterSelector(Identifier preferredName) const {
49624962
// If the setter has an @objc attribute with a name, use that.
4963-
auto setter = getParsedAccessor(AccessorKind::Set);
4963+
auto setter = getAccessor(AccessorKind::Set);
49644964
auto objcAttr = setter ? setter->getAttrs().getAttribute<ObjCAttr>()
49654965
: nullptr;
49664966
if (auto name = getNameFromObjcAttribute(objcAttr, DeclName(preferredName))) {

test/PrintAsObjC/getter_setter.swift

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,14 @@ import Foundation
1212
// written in Objective-C.
1313
public final class Saiyan: NSObject, PowerProtocol {
1414
public var level: Int64
15-
// FIXME: The getter and setter names should show up here.
16-
// HEADER: @property (nonatomic) int64_t level;
15+
// HEADER: @property (nonatomic, getter=getPower, setter=setPower:) int64_t level;
1716
// IRCHECK1: METACLASS_DATA__TtC13getter_setter6Saiyan
18-
// IRCHECK1-NOT: selector_data(getPower)
19-
// IRCHECK1-NOT: selector_data(setPower:)
17+
// IRCHECK1: selector_data(getPower)
18+
// IRCHECK1: selector_data(setPower:)
2019
// IRCHECK1: INSTANCE_METHODS__TtC13getter_setter6Saiyan
2120
// IRCHECK2: METACLASS_DATA__TtC13getter_setter6Saiyan
22-
// IRCHECK2: selector_data(level)
23-
// IRCHECK2: selector_data(setLevel:)
21+
// IRCHECK2-NOT: selector_data(level)
22+
// IRCHECK2-NOT: selector_data(setLevel:)
2423
// IRCHECK2: INSTANCE_METHODS__TtC13getter_setter6Saiyan
2524
public override init() {
2625
level = 9001

0 commit comments

Comments
 (0)