@@ -135,8 +135,8 @@ static AvailableAttr *createAvailableAttr(PlatformKind Platform,
135135}
136136
137137void AvailabilityInference::applyInferredAvailableAttrs (
138- Decl *ToDecl, ArrayRef<const Decl *> InferredFromDecls,
139- ASTContext &Context) {
138+ Decl *ToDecl, ArrayRef<const Decl *> InferredFromDecls) {
139+ auto &Context = ToDecl-> getASTContext ();
140140
141141 // Let the new AvailabilityAttr inherit the message and rename.
142142 // The first encountered message / rename will win; this matches the
@@ -370,8 +370,8 @@ bool AvailabilityInference::updateBeforePlatformForFallback(
370370}
371371
372372const AvailableAttr *
373- AvailabilityInference::attrForAnnotatedAvailableRange (const Decl *D,
374- ASTContext &Ctx) {
373+ AvailabilityInference::attrForAnnotatedAvailableRange (const Decl *D) {
374+ ASTContext &Ctx = D-> getASTContext ();
375375 const AvailableAttr *bestAvailAttr = nullptr ;
376376
377377 D = abstractSyntaxDeclForAvailableAttribute (D);
@@ -395,8 +395,7 @@ AvailabilityInference::attrForAnnotatedAvailableRange(const Decl *D,
395395std::optional<AvailableAttrDeclPair>
396396SemanticAvailableRangeAttrRequest::evaluate (Evaluator &evaluator,
397397 const Decl *decl) const {
398- if (auto attr = AvailabilityInference::attrForAnnotatedAvailableRange (
399- decl, decl->getASTContext ()))
398+ if (auto attr = AvailabilityInference::attrForAnnotatedAvailableRange (decl))
400399 return std::make_pair (attr, decl);
401400
402401 if (auto *parent =
@@ -414,16 +413,16 @@ Decl::getSemanticAvailableRangeAttr() const {
414413}
415414
416415std::optional<AvailabilityRange>
417- AvailabilityInference::annotatedAvailableRange (const Decl *D, ASTContext &Ctx ) {
418- auto bestAvailAttr = attrForAnnotatedAvailableRange (D, Ctx );
416+ AvailabilityInference::annotatedAvailableRange (const Decl *D) {
417+ auto bestAvailAttr = attrForAnnotatedAvailableRange (D);
419418 if (!bestAvailAttr)
420419 return std::nullopt ;
421420
422- return availableRange (bestAvailAttr, Ctx );
421+ return availableRange (bestAvailAttr, D-> getASTContext () );
423422}
424423
425424bool Decl::isAvailableAsSPI () const {
426- return AvailabilityInference::isAvailableAsSPI (this , getASTContext () );
425+ return AvailabilityInference::isAvailableAsSPI (this );
427426}
428427
429428std::optional<AvailableAttrDeclPair>
@@ -540,9 +539,8 @@ AvailabilityRange AvailabilityInference::annotatedAvailableRangeForAttr(
540539 return AvailabilityRange::alwaysAvailable ();
541540}
542541
543- static const AvailableAttr *attrForAvailableRange (const Decl *D,
544- ASTContext &Ctx) {
545- if (auto attr = AvailabilityInference::attrForAnnotatedAvailableRange (D, Ctx))
542+ static const AvailableAttr *attrForAvailableRange (const Decl *D) {
543+ if (auto attr = AvailabilityInference::attrForAnnotatedAvailableRange (D))
546544 return attr;
547545
548546 // Unlike other declarations, extensions can be used without referring to them
@@ -555,25 +553,23 @@ static const AvailableAttr *attrForAvailableRange(const Decl *D,
555553
556554 DeclContext *DC = D->getDeclContext ();
557555 if (auto *ED = dyn_cast<ExtensionDecl>(DC)) {
558- if (auto attr =
559- AvailabilityInference::attrForAnnotatedAvailableRange (ED, Ctx))
556+ if (auto attr = AvailabilityInference::attrForAnnotatedAvailableRange (ED))
560557 return attr;
561558 }
562559
563560 return nullptr ;
564561}
565562
566- AvailabilityRange AvailabilityInference::availableRange (const Decl *D,
567- ASTContext &Ctx) {
568- if (auto attr = attrForAvailableRange (D, Ctx))
569- return availableRange (attr, Ctx);
563+ AvailabilityRange AvailabilityInference::availableRange (const Decl *D) {
564+ if (auto attr = attrForAvailableRange (D))
565+ return availableRange (attr, D->getASTContext ());
570566
571567 // Treat unannotated declarations as always available.
572568 return AvailabilityRange::alwaysAvailable ();
573569}
574570
575- bool AvailabilityInference::isAvailableAsSPI (const Decl *D, ASTContext &Ctx ) {
576- if (auto attr = attrForAvailableRange (D, Ctx ))
571+ bool AvailabilityInference::isAvailableAsSPI (const Decl *D) {
572+ if (auto attr = attrForAvailableRange (D))
577573 return attr->IsSPI ;
578574
579575 return false ;
@@ -598,15 +594,12 @@ namespace {
598594// / Infers the availability required to access a type.
599595class AvailabilityInferenceTypeWalker : public TypeWalker {
600596public:
601- ASTContext &AC;
602597 AvailabilityRange AvailabilityInfo = AvailabilityRange::alwaysAvailable();
603598
604- AvailabilityInferenceTypeWalker (ASTContext &AC) : AC(AC) {}
605-
606599 Action walkToTypePre (Type ty) override {
607600 if (auto *nominalDecl = ty->getAnyNominal ()) {
608601 AvailabilityInfo.intersectWith (
609- AvailabilityInference::availableRange (nominalDecl, AC ));
602+ AvailabilityInference::availableRange (nominalDecl));
610603 }
611604
612605 return Action::Continue;
@@ -615,7 +608,7 @@ class AvailabilityInferenceTypeWalker : public TypeWalker {
615608} // end anonymous namespace
616609
617610AvailabilityRange AvailabilityInference::inferForType (Type t) {
618- AvailabilityInferenceTypeWalker walker (t-> getASTContext ()) ;
611+ AvailabilityInferenceTypeWalker walker;
619612 t.walk (walker);
620613 return walker.AvailabilityInfo ;
621614}
0 commit comments