Skip to content

Commit 9bcb549

Browse files
author
Nathan Hawes
committed
[AST] Prefer the 'macOS' spelling over 'OSX' when printing the platform kind.
This affects module interfaces, interface generation in sourcekitd, and diagnostics. Also fixes a fixit that was assuming the 'OSX' spelling when computing the source range to replace. Resolves rdar://problem/64667960
1 parent 241c5d9 commit 9bcb549

21 files changed

+195
-191
lines changed

lib/AST/PlatformKind.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@
2424
using namespace swift;
2525

2626
StringRef swift::platformString(PlatformKind platform) {
27+
// FIXME: Update PlatformKinds.def to use the macOS spelling by default.
28+
switch (platform) {
29+
case PlatformKind::OSX:
30+
return "macOS";
31+
case PlatformKind::OSXApplicationExtension:
32+
return "macOSApplicationExtension";
33+
default: break;
34+
}
35+
2736
switch (platform) {
2837
case PlatformKind::none:
2938
return "*";

lib/IDE/CodeCompletion.cpp

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4429,14 +4429,10 @@ class CompletionLookup final : public swift::VisibleDeclConsumer {
44294429
if (ParamIndex == 0) {
44304430
addDeclAttrParamKeyword("*", "Platform", false);
44314431

4432-
// For code completion, suggest 'macOS' instead of 'OSX'.
4432+
// For code completion, suggest 'macOS' instead of 'OSX'.
44334433
#define AVAILABILITY_PLATFORM(X, PrettyName) \
4434-
if (StringRef(#X) == "OSX") \
4435-
addDeclAttrParamKeyword("macOS", "Platform", false); \
4436-
else if (StringRef(#X) == "OSXApplicationExtension") \
4437-
addDeclAttrParamKeyword("macOSApplicationExtension", "Platform", false); \
4438-
else \
4439-
addDeclAttrParamKeyword(#X, "Platform", false);
4434+
addDeclAttrParamKeyword(swift::platformString(PlatformKind::X), \
4435+
"Platform", false);
44404436
#include "swift/AST/PlatformKinds.def"
44414437

44424438
} else {

lib/Parse/ParseStmt.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1350,10 +1350,9 @@ Parser::parseAvailabilitySpecList(SmallVectorImpl<AvailabilitySpec *> &Specs) {
13501350
auto *PlatformSpec =
13511351
cast<PlatformVersionConstraintAvailabilitySpec>(Previous);
13521352

1353-
auto PlatformName = platformString(PlatformSpec->getPlatform());
13541353
auto PlatformNameEndLoc =
1355-
PlatformSpec->getPlatformLoc().getAdvancedLoc(
1356-
PlatformName.size());
1354+
Lexer::getLocForEndOfToken(SourceManager,
1355+
PlatformSpec->getPlatformLoc());
13571356

13581357
diagnose(PlatformSpec->getPlatformLoc(),
13591358
diag::avail_query_meant_introduced)

test/ClangImporter/objc_factory_method.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ func testFactoryWithLaterIntroducedInit() {
4545
// expected-note @-1 {{add 'if #available' version check}}
4646

4747
_ = NSHavingConvenienceFactoryAndLaterDesignatedInit(flam:5) // expected-error {{'init(flam:)' is only available in macOS 10.52 or newer}}
48-
// expected-note @-1 {{add 'if #available' version check}} {{3-63=if #available(OSX 10.52, *) {\n _ = NSHavingConvenienceFactoryAndLaterDesignatedInit(flam:5)\n \} else {\n // Fallback on earlier versions\n \}}}
48+
// expected-note @-1 {{add 'if #available' version check}} {{3-63=if #available(macOS 10.52, *) {\n _ = NSHavingConvenienceFactoryAndLaterDesignatedInit(flam:5)\n \} else {\n // Fallback on earlier versions\n \}}}
4949

5050

5151
// Don't prefer more available factory initializer over less

test/Frontend/emit-interface-macos-canonical-version.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
@available(macOS 10.16, *)
88
public func introduced10_16() { }
9-
// CHECK: @available(OSX 11.0, *)
9+
// CHECK: @available(macOS 11.0, *)
1010
// CHECK-NEXT: public func introduced10_16()
1111

1212

1313
@available(OSX 11.0, *)
1414
public func introduced11_0() { }
15-
// CHECK-NEXT: @available(OSX 11.0, *)
15+
// CHECK-NEXT: @available(macOS 11.0, *)
1616
// CHECK-NEXT: public func introduced11_0()
1717

1818

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
class MaybeAvailable {
2-
@available(OSX 10.1, *)
2+
@available(macOS 10.1, *)
33
class func method1()
4-
@available(OSX 10.1, *)
4+
@available(macOS 10.1, *)
55
func method1()
6-
@available(OSX 10.1, *)
6+
@available(macOS 10.1, *)
77
class func method2()
8-
@available(OSX 10.1, *)
8+
@available(macOS 10.1, *)
99
func method2()
10-
@available(OSX, deprecated: 10.10)
10+
@available(macOS, deprecated: 10.10)
1111
class func method3()
12-
@available(OSX, deprecated: 10.10)
12+
@available(macOS, deprecated: 10.10)
1313
func method3()
14-
@available(OSX, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
14+
@available(macOS, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
1515
class func method4()
16-
@available(OSX, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
16+
@available(macOS, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
1717
func method4()
1818
}
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
class MaybeAvailable {
2-
@available(OSX 10.1, *)
2+
@available(macOS 10.1, *)
33
class func method1()
4-
@available(OSX 10.1, *)
4+
@available(macOS 10.1, *)
55
func method1()
6-
@available(OSX 10.1, *)
6+
@available(macOS 10.1, *)
77
class func method2()
8-
@available(OSX 10.1, *)
8+
@available(macOS 10.1, *)
99
func method2()
10-
@available(OSX, deprecated: 10.10)
10+
@available(macOS, deprecated: 10.10)
1111
class func method3()
12-
@available(OSX, deprecated: 10.10)
12+
@available(macOS, deprecated: 10.10)
1313
func method3()
14-
@available(OSX, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
14+
@available(macOS, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
1515
class func method4()
16-
@available(OSX, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
16+
@available(macOS, introduced: 10.1, deprecated: 10.10, obsoleted: 10.11)
1717
func method4()
1818
}

test/IDE/print_ast_tc_decls.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -516,19 +516,19 @@ class d0170_TestAvailability {
516516
@available(OSX, unavailable)
517517
func f3() {}
518518
// PASS_COMMON-NEXT: {{^}} @available(iOS, unavailable){{$}}
519-
// PASS_COMMON-NEXT: {{^}} @available(OSX, unavailable){{$}}
519+
// PASS_COMMON-NEXT: {{^}} @available(macOS, unavailable){{$}}
520520
// PASS_COMMON-NEXT: {{^}} func f3(){{$}}
521521

522522
@available(iOS 8.0, OSX 10.10, *)
523523
func f4() {}
524-
// PASS_COMMON-NEXT: {{^}} @available(iOS 8.0, OSX 10.10, *){{$}}
524+
// PASS_COMMON-NEXT: {{^}} @available(iOS 8.0, macOS 10.10, *){{$}}
525525
// PASS_COMMON-NEXT: {{^}} func f4(){{$}}
526526

527527
// Convert long-form @available() to short form when possible.
528528
@available(iOS, introduced: 8.0)
529529
@available(OSX, introduced: 10.10)
530530
func f5() {}
531-
// PASS_COMMON-NEXT: {{^}} @available(iOS 8.0, OSX 10.10, *){{$}}
531+
// PASS_COMMON-NEXT: {{^}} @available(iOS 8.0, macOS 10.10, *){{$}}
532532
// PASS_COMMON-NEXT: {{^}} func f5(){{$}}
533533
}
534534

test/IDE/print_ast_tc_decls_macosx_canonical_versions.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,5 @@
1212

1313
@available(iOS 10.16, OSX 10.16, *)
1414
func introduced10_16() {}
15-
// PASS_COMMON: {{^}}@available(iOS 10.16, OSX 11.0, *){{$}}
15+
// PASS_COMMON: {{^}}@available(iOS 10.16, macOS 11.0, *){{$}}
1616
// PASS_COMMON-NEXT: {{^}}func introduced10_16(){{$}}

test/IDE/print_swift_module_with_available.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55

66
// REQUIRES: OS=macosx
77

8-
@available(OSX 10.11, iOS 8.0, *)
8+
@available(macOS 10.11, iOS 8.0, *)
99
public class C1 {
1010
}
1111

12-
@available(OSX 10.12, *)
12+
@available(macOS 10.12, *)
1313
public extension C1 {
1414
func ext_foo() {}
1515
}
1616

17-
// CHECK1: @available(OSX 10.11, iOS 8.0, *)
17+
// CHECK1: @available(macOS 10.11, iOS 8.0, *)
1818
// CHECK1-NEXT: public class C1 {
1919

20-
// CHECK1: @available(OSX 10.12, *)
20+
// CHECK1: @available(macOS 10.12, *)
2121
// CHECK1-NEXT: extension C1 {

0 commit comments

Comments
 (0)