@@ -265,13 +265,12 @@ SourceLoc AvailabilityScope::getIntroductionLoc() const {
265265 llvm_unreachable (" Unhandled Reason in switch." );
266266}
267267
268- static SourceRange
269- getAvailabilityConditionVersionSourceRange (const PoundAvailableInfo *PAI,
270- PlatformKind Platform,
271- const llvm::VersionTuple &Version) {
268+ static SourceRange getAvailabilityConditionVersionSourceRange (
269+ const PoundAvailableInfo *PAI, const DeclContext *ReferenceDC,
270+ AvailabilityDomain Domain, const llvm::VersionTuple &Version) {
272271 SourceRange Range;
273272 for (auto *Spec : PAI->getQueries ()) {
274- if (Spec->getPlatform () == Platform && Spec->getVersion () == Version) {
273+ if (Spec->getDomain () == Domain && Spec->getVersion () == Version) {
275274 // More than one: return invalid range, no unique choice.
276275 if (Range.isValid ())
277276 return SourceRange ();
@@ -283,13 +282,14 @@ getAvailabilityConditionVersionSourceRange(const PoundAvailableInfo *PAI,
283282}
284283
285284static SourceRange getAvailabilityConditionVersionSourceRange (
286- const MutableArrayRef<StmtConditionElement> &Conds, PlatformKind Platform,
285+ const MutableArrayRef<StmtConditionElement> &Conds,
286+ const DeclContext *ReferenceDC, AvailabilityDomain Domain,
287287 const llvm::VersionTuple &Version) {
288288 SourceRange Range;
289289 for (auto const &C : Conds) {
290290 if (C.getKind () == StmtConditionElement::CK_Availability) {
291291 SourceRange R = getAvailabilityConditionVersionSourceRange (
292- C.getAvailability (), Platform , Version);
292+ C.getAvailability (), ReferenceDC, Domain , Version);
293293 // More than one: return invalid range.
294294 if (Range.isValid ())
295295 return SourceRange ();
@@ -301,13 +301,13 @@ static SourceRange getAvailabilityConditionVersionSourceRange(
301301}
302302
303303static SourceRange
304- getAvailabilityConditionVersionSourceRange (const Decl *D, PlatformKind Platform,
304+ getAvailabilityConditionVersionSourceRange (const Decl *D,
305+ AvailabilityDomain Domain,
305306 const llvm::VersionTuple &Version) {
306307 SourceRange Range;
307308 for (auto Attr : D->getSemanticAvailableAttrs ()) {
308309 if (Attr.getIntroduced ().has_value () &&
309- Attr.getIntroduced ().value () == Version &&
310- Attr.getPlatform () == Platform) {
310+ Attr.getIntroduced ().value () == Version && Attr.getDomain () == Domain) {
311311
312312 // More than one: return invalid range.
313313 if (Range.isValid ())
@@ -320,29 +320,31 @@ getAvailabilityConditionVersionSourceRange(const Decl *D, PlatformKind Platform,
320320}
321321
322322SourceRange AvailabilityScope::getAvailabilityConditionVersionSourceRange (
323- PlatformKind Platform , const llvm::VersionTuple &Version) const {
323+ AvailabilityDomain Domain , const llvm::VersionTuple &Version) const {
324324 switch (getReason ()) {
325325 case Reason::Decl:
326326 return ::getAvailabilityConditionVersionSourceRange (Node.getAsDecl (),
327- Platform , Version);
327+ Domain , Version);
328328
329329 case Reason::IfStmtThenBranch:
330330 case Reason::IfStmtElseBranch:
331331 return ::getAvailabilityConditionVersionSourceRange (
332- Node.getAsIfStmt ()->getCond (), Platform , Version);
332+ Node.getAsIfStmt ()->getCond (), Node. getDeclContext (), Domain , Version);
333333
334334 case Reason::ConditionFollowingAvailabilityQuery:
335335 return ::getAvailabilityConditionVersionSourceRange (
336- Node.getAsPoundAvailableInfo (), Platform , Version);
336+ Node.getAsPoundAvailableInfo (), Node. getDeclContext (), Domain , Version);
337337
338338 case Reason::GuardStmtFallthrough:
339339 case Reason::GuardStmtElseBranch:
340340 return ::getAvailabilityConditionVersionSourceRange (
341- Node.getAsGuardStmt ()->getCond (), Platform, Version);
341+ Node.getAsGuardStmt ()->getCond (), Node.getDeclContext (), Domain,
342+ Version);
342343
343344 case Reason::WhileStmtBody:
344345 return ::getAvailabilityConditionVersionSourceRange (
345- Node.getAsWhileStmt ()->getCond (), Platform, Version);
346+ Node.getAsWhileStmt ()->getCond (), Node.getDeclContext (), Domain,
347+ Version);
346348
347349 case Reason::Root:
348350 case Reason::DeclImplicit:
0 commit comments