[PATCH] D31006: [Objective-C] Fix "weak-unavailable" warning with -fobjc-weak

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Mar 20 23:05:48 PDT 2017


rjmccall accepted this revision.
rjmccall added a comment.
This revision is now accepted and ready to land.

LGTM.



================
Comment at: lib/Sema/SemaCast.cpp:125
+      assert(Self.getLangOpts().ObjCAutoRefCount ||
+             Self.getLangOpts().ObjCWeak);
 
----------------
bkelley wrote:
> rjmccall wrote:
> > Unlike the other patches, we do clearly need to be checking the language options in places like this.  Still, it's a shame to repeat the same condition in a million places.
> > 
> > I think the right thing to do here is to add a helper method to LangOpts:
> > 
> >   /// Returns true if any types in the program might have non-trivial lifetime qualifiers.
> >   bool allowsNonTrivialObjCLifetimeQualifiers() const {
> >     return ObjCAutoRefCount || ObjCWeak;
> >   }
> Thanks for the suggestion. I was hesitant to add a method to LangOpts since it has so few derived state functions, but it certainly makes everything else cleaner.
There's probably two main reasons for that:

  - Often, when there's a feature that cuts across different language configurations, there's also a specific language option for it.
  - People are too reticent about adding derived state functions to LangOpts. :)


https://reviews.llvm.org/D31006





More information about the cfe-commits mailing list