Skip to content

Commit 7493ecc

Browse files
committed
[PrintAsObjC] Include a message when making +new unavailable
Another follow-up to 49c65fa. We've seen a few people run into this and not know what changed. rdar://problem/35942058
1 parent 9ddd60d commit 7493ecc

File tree

4 files changed

+6
-5
lines changed

4 files changed

+6
-5
lines changed

lib/PrintAsObjC/PrintAsObjC.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,8 @@ class ObjCPrinter : private DeclVisitor<ObjCPrinter>,
679679

680680
if (makeNewUnavailable) {
681681
assert(!makeNewExplicitlyAvailable);
682-
os << "+ (nonnull instancetype)new SWIFT_UNAVAILABLE;\n";
682+
os << "+ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("
683+
"\"-init is unavailable\");\n";
683684
} else if (makeNewExplicitlyAvailable) {
684685
os << "+ (nonnull instancetype)new;\n";
685686
}

test/PrintAsObjC/availability.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757

5858
// CHECK-LABEL: @interface AvailabilitySub
5959
// CHECK-NEXT: - (nonnull instancetype)init SWIFT_UNAVAILABLE;
60-
// CHECK-NEXT: + (nonnull instancetype)new SWIFT_UNAVAILABLE;
60+
// CHECK-NEXT: + (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
6161
// CHECK-NEXT: - (nonnull instancetype)initWithX:(NSInteger)_ SWIFT_UNAVAILABLE;
6262
// CHECK-NEXT: @end
6363

test/PrintAsObjC/classes.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ class DiscardableResult : NSObject {
178178
// CHECK-LABEL: @interface InheritedInitializersRequired
179179
// CHECK-NEXT: - (nonnull instancetype)initWithEvenMoreFun OBJC_DESIGNATED_INITIALIZER;
180180
// CHECK-NEXT: - (nonnull instancetype)init SWIFT_UNAVAILABLE;
181-
// CHECK-NEXT: + (nonnull instancetype)new SWIFT_UNAVAILABLE;
181+
// CHECK-NEXT: + (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
182182
// CHECK-NEXT: @end
183183
@objc class InheritedInitializersRequired : InheritedInitializers {
184184
@objc required init(evenMoreFun: ()) { super.init() }
@@ -436,7 +436,7 @@ class MyObject : NSObject {}
436436
// CHECK-LABEL: @interface NewBanned
437437
// CHECK-NEXT: - (nonnull instancetype)initWithArbitraryArgument:(NSInteger)arbitraryArgument OBJC_DESIGNATED_INITIALIZER;
438438
// CHECK-NEXT: - (nonnull instancetype)init SWIFT_UNAVAILABLE;
439-
// CHECK-NEXT: + (nonnull instancetype)new SWIFT_UNAVAILABLE;
439+
// CHECK-NEXT: + (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable");
440440
// CHECK-NEXT: @end
441441
@objc class NewBanned : NSObject {
442442
init(arbitraryArgument: Int) { super.init() }

validation-test/PrintAsObjC/reintroduced-new.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ void test() {
1717
(void)[[Base alloc] init];
1818
// CHECK-NOT: error:
1919
(void)[[Sub alloc] init];
20-
// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: 'new' is unavailable
20+
// CHECK: :[[@LINE+1]]:{{[0-9]+}}: error: 'new' is unavailable: -init is unavailable
2121
(void)[Base new];
2222
// CHECK-NOT: error:
2323
(void)[Sub new];

0 commit comments

Comments
 (0)