Skip to content

Commit 33b5a48

Browse files
authored
Merge pull request #39815 from nkcsgexi/84425205-5.5
[5.5]Sema: allow @_originallyDefinedIn to specify identical version numbers as @available.
2 parents 80e9fe1 + 48fd4cc commit 33b5a48

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,8 +1581,8 @@ ERROR(originally_definedin_topleve_decl,none,
15811581
ERROR(originally_definedin_need_available,none,
15821582
"need @available attribute for @%0", (StringRef))
15831583

1584-
ERROR(originally_definedin_must_after_available_version,none,
1585-
"moved version from @%0 must after introduced OS version", (StringRef))
1584+
ERROR(originally_definedin_must_not_before_available_version,none,
1585+
"symbols are moved to the current module before they were available in the OSs", (StringRef))
15861586

15871587
// Alignment attribute
15881588
ERROR(alignment_not_power_of_two,none,

lib/Sema/TypeCheckAttr.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3270,9 +3270,9 @@ void AttributeChecker::checkOriginalDefinedInAttrs(Decl *D,
32703270
AttrName);
32713271
return;
32723272
}
3273-
if (IntroVer.getValue() >= Attr->MovedVersion) {
3273+
if (IntroVer.getValue() > Attr->MovedVersion) {
32743274
diagnose(AtLoc,
3275-
diag::originally_definedin_must_after_available_version,
3275+
diag::originally_definedin_must_not_before_available_version,
32763276
AttrName);
32773277
return;
32783278
}

test/Sema/diag_originally_definedin.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,16 @@
66
public func foo() {}
77

88
@available(macOS 10.13, *)
9-
@_originallyDefinedIn(module: "original", OSX 10.12) // expected-error {{moved version from @_originallyDefinedIn must after introduced OS version}}
9+
@_originallyDefinedIn(module: "original", OSX 10.12) // expected-error {{symbols are moved to the current module before they were available in the OSs}}
1010
public class C {
1111
@_originallyDefinedIn(module: "original", OSX 10.13) // expected-error {{@_originallyDefinedIn is only applicable to top-level decl}}
1212
public func foo() {}
1313
}
1414

15+
@available(macOS 10.13, *)
16+
@_originallyDefinedIn(module: "original", OSX 10.13)
17+
public class D {}
18+
1519
@available(macOS 10.9, *)
1620
@_originallyDefinedIn(module: "original", _myProject 2.0) // expected-error {{expected at least one platform version in @_originallyDefinedIn}}
1721
// expected-error @-1 {{reference to undefined version '2.0' for availability macro '_myProject'}}

0 commit comments

Comments
 (0)