Skip to content

Commit cb20ca4

Browse files
authored
Merge pull request #1909 from swiftwasm/main
[pull] swiftwasm from main
2 parents a9740c9 + c02dc72 commit cb20ca4

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

lib/Sema/TypeCheckAvailability.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -1566,7 +1566,10 @@ static bool isInsideCompatibleUnavailableDeclaration(
15661566
auto IsUnavailable = [platform](const Decl *D) {
15671567
auto EnclosingUnavailable =
15681568
D->getAttrs().getUnavailable(D->getASTContext());
1569-
return EnclosingUnavailable && EnclosingUnavailable->Platform == platform;
1569+
return EnclosingUnavailable &&
1570+
(EnclosingUnavailable->Platform == platform ||
1571+
inheritsAvailabilityFromPlatform(platform,
1572+
EnclosingUnavailable->Platform));
15701573
};
15711574

15721575
return someEnclosingDeclMatches(ReferenceRange, ReferenceDC, IsUnavailable);

stdlib/public/Darwin/Foundation/URL.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -827,7 +827,8 @@ public struct URL : ReferenceConvertible, Equatable {
827827
} else {
828828
// Now we need to do something more expensive
829829
if var c = URLComponents(url: self, resolvingAgainstBaseURL: true) {
830-
c.path = (c.path as NSString).appendingPathComponent(pathComponent)
830+
let path = (c.path as NSString).appendingPathComponent(pathComponent)
831+
c.path = isDirectory ? path + "/" : path
831832

832833
if let result = c.url {
833834
return result

test/attr/attr_availability_maccatalyst.swift

+24
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,27 @@ protocol P: Builtin.AnyObject {
140140
}
141141

142142
extension X: P {}
143+
144+
// Test platform inheritance for iOS unavailability.
145+
// rdar://68597591
146+
147+
@available(iOS, unavailable)
148+
public struct UnavailableOniOS { } // expected-note 2 {{'UnavailableOniOS' has been explicitly marked unavailable here}}
149+
150+
@available(iOS, unavailable)
151+
func unavailableOniOS(_ p: UnavailableOniOS) { } // ok
152+
153+
func functionUsingAnUnavailableType(_ p: UnavailableOniOS) { } // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
154+
155+
public extension UnavailableOniOS { } // expected-error {{'UnavailableOniOS' is unavailable in iOS}}
156+
157+
@available(iOS, unavailable)
158+
public extension UnavailableOniOS { // ok
159+
func someMethod(_ p: UnavailableOniOS) { }
160+
}
161+
162+
@available(iOS, unavailable)
163+
@available(macCatalyst, introduced: 13.0)
164+
public struct AvailableOnMacCatalyst { }
165+
166+
public extension AvailableOnMacCatalyst { } // ok

0 commit comments

Comments
 (0)