@@ -37,8 +37,7 @@ static bool constrainRange(AvailabilityRange &existing,
3737 return true ;
3838}
3939
40- bool AvailabilityContext::PlatformInfo::constrainWith (
41- const PlatformInfo &other) {
40+ bool AvailabilityContext::Info::constrainWith (const Info &other) {
4241 bool isConstrained = false ;
4342 isConstrained |= constrainRange (Range, other.Range );
4443 if (other.IsUnavailable ) {
@@ -51,7 +50,7 @@ bool AvailabilityContext::PlatformInfo::constrainWith(
5150 return isConstrained;
5251}
5352
54- bool AvailabilityContext::PlatformInfo ::constrainWith (const Decl *decl) {
53+ bool AvailabilityContext::Info ::constrainWith (const Decl *decl) {
5554 bool isConstrained = false ;
5655
5756 if (auto range = AvailabilityInference::annotatedAvailableRange (decl))
@@ -68,7 +67,7 @@ bool AvailabilityContext::PlatformInfo::constrainWith(const Decl *decl) {
6867 return isConstrained;
6968}
7069
71- bool AvailabilityContext::PlatformInfo ::constrainUnavailability (
70+ bool AvailabilityContext::Info ::constrainUnavailability (
7271 std::optional<PlatformKind> unavailablePlatform) {
7372 if (!unavailablePlatform)
7473 return false ;
@@ -94,8 +93,7 @@ bool AvailabilityContext::PlatformInfo::constrainUnavailability(
9493 return true ;
9594}
9695
97- bool AvailabilityContext::PlatformInfo::isContainedIn (
98- const PlatformInfo &other) const {
96+ bool AvailabilityContext::Info::isContainedIn (const Info &other) const {
9997 if (!Range.isContainedIn (other.Range ))
10098 return false ;
10199
@@ -120,17 +118,17 @@ bool AvailabilityContext::PlatformInfo::isContainedIn(
120118}
121119
122120void AvailabilityContext::Storage::Profile (llvm::FoldingSetNodeID &id) const {
123- Platform .Profile (id);
121+ info .Profile (id);
124122}
125123
126124AvailabilityContext
127125AvailabilityContext::forPlatformRange (const AvailabilityRange &range,
128126 ASTContext &ctx) {
129- PlatformInfo platformInfo {range, PlatformKind::none,
130- /* IsUnavailable*/ false ,
131- /* IsUnavailableInEmbedded*/ false ,
132- /* IsDeprecated*/ false };
133- return AvailabilityContext (Storage::get (platformInfo , ctx));
127+ Info info {range, PlatformKind::none,
128+ /* IsUnavailable*/ false ,
129+ /* IsUnavailableInEmbedded*/ false ,
130+ /* IsDeprecated*/ false };
131+ return AvailabilityContext (Storage::get (info , ctx));
134132}
135133
136134AvailabilityContext AvailabilityContext::forInliningTarget (ASTContext &ctx) {
@@ -147,40 +145,44 @@ AvailabilityContext
147145AvailabilityContext::get (const AvailabilityRange &platformAvailability,
148146 std::optional<PlatformKind> unavailablePlatform,
149147 bool deprecated, ASTContext &ctx) {
150- PlatformInfo platformInfo{platformAvailability,
151- unavailablePlatform.has_value ()
152- ? *unavailablePlatform
153- : PlatformKind::none,
154- unavailablePlatform.has_value (),
155- /* IsUnavailableInEmbedded*/ false , deprecated};
156- return AvailabilityContext (Storage::get (platformInfo, ctx));
148+ Info info{platformAvailability,
149+ unavailablePlatform.has_value () ? *unavailablePlatform
150+ : PlatformKind::none,
151+ unavailablePlatform.has_value (),
152+ /* IsUnavailableInEmbedded*/ false , deprecated};
153+ return AvailabilityContext (Storage::get (info, ctx));
157154}
158155
159156AvailabilityRange AvailabilityContext::getPlatformRange () const {
160- return Info-> Platform .Range ;
157+ return storage-> info .Range ;
161158}
162159
163160std::optional<PlatformKind>
164161AvailabilityContext::getUnavailablePlatformKind () const {
165- if (Info-> Platform .IsUnavailable )
166- return Info-> Platform .UnavailablePlatform ;
162+ if (storage-> info .IsUnavailable )
163+ return storage-> info .UnavailablePlatform ;
167164 return std::nullopt ;
168165}
169166
170167bool AvailabilityContext::isUnavailableInEmbedded () const {
171- return Info-> Platform .IsUnavailableInEmbedded ;
168+ return storage-> info .IsUnavailableInEmbedded ;
172169}
173170
174171bool AvailabilityContext::isDeprecated () const {
175- return Info-> Platform .IsDeprecated ;
172+ return storage-> info .IsDeprecated ;
176173}
177174
178175void AvailabilityContext::constrainWithContext (const AvailabilityContext &other,
179176 ASTContext &ctx) {
180- PlatformInfo platformAvailability{Info->Platform };
181- if (platformAvailability.constrainWith (other.Info ->Platform )) {
182- Info = Storage::get (platformAvailability, ctx);
183- }
177+ bool isConstrained = false ;
178+
179+ Info info{storage->info };
180+ isConstrained |= info.constrainWith (other.storage ->info );
181+
182+ if (!isConstrained)
183+ return ;
184+
185+ storage = Storage::get (info, ctx);
184186}
185187
186188void AvailabilityContext::constrainWithDecl (const Decl *decl) {
@@ -189,28 +191,30 @@ void AvailabilityContext::constrainWithDecl(const Decl *decl) {
189191
190192void AvailabilityContext::constrainWithPlatformRange (
191193 const AvailabilityRange &platformRange, ASTContext &ctx) {
192- PlatformInfo platformAvailability{Info->Platform };
193- if (!constrainRange (platformAvailability.Range , platformRange))
194+
195+ Info info{storage->info };
196+ if (!constrainRange (info.Range , platformRange))
194197 return ;
195198
196- Info = Storage::get (platformAvailability , ctx);
199+ storage = Storage::get (info , ctx);
197200}
198201
199202void AvailabilityContext::constrainWithDeclAndPlatformRange (
200203 const Decl *decl, const AvailabilityRange &platformRange) {
201- PlatformInfo platformAvailability{Info->Platform };
202204 bool isConstrained = false ;
203- isConstrained |= platformAvailability.constrainWith (decl);
204- isConstrained |= constrainRange (platformAvailability.Range , platformRange);
205+
206+ Info info{storage->info };
207+ isConstrained |= info.constrainWith (decl);
208+ isConstrained |= constrainRange (info.Range , platformRange);
205209
206210 if (!isConstrained)
207211 return ;
208212
209- Info = Storage::get (platformAvailability , decl->getASTContext ());
213+ storage = Storage::get (info , decl->getASTContext ());
210214}
211215
212216bool AvailabilityContext::isContainedIn (const AvailabilityContext other) const {
213- if (!Info-> Platform .isContainedIn (other.Info -> Platform ))
217+ if (!storage-> info .isContainedIn (other.storage -> info ))
214218 return false ;
215219
216220 return true ;
0 commit comments