erik.pilkington accepted this revision. erik.pilkington added a comment. This revision is now accepted and ready to land.
LGTM, thanks! ================ Comment at: lib/Sema/SemaDecl.cpp:9134-9151 + // Diagnose availability attributes. Availability cannot be used on functions + // that are run during load/unload. + for (const auto& attr: NewFD->attrs()) { + if (!isa<AvailabilityAttr>(attr)) + continue; + + if (NewFD->hasAttr<ConstructorAttr>()) { ---------------- steven_wu wrote: > erik.pilkington wrote: > > Shouldn't this be in ProcessDeclAttributeList in SemaDeclAttr.cpp? > This has to happen after mergeDeclAttributes, otherwise, you won't catch the > case which the availability attributes and constructor attributes are on > different decl that gets merged. It can't be in mergeDeclAttributes as well, > then it won't catch the case they are on a single decl. Ah, okay. Makes sense. ================ Comment at: lib/Sema/SemaDecl.cpp:9136 + // that are run during load/unload. + for (const auto& attr: NewFD->attrs()) { + if (!isa<AvailabilityAttr>(attr)) ---------------- steven_wu wrote: > erik.pilkington wrote: > > Can't this just be: `if (NewFD->hasAttr<AvailabilityAttr>())`? > The location of the diagnostics need to be on attributes and that is why it > is a for loop. Maybe `if (auto *AA = NewFD->getAttr<AvailabilityAttr>())` then? Repository: rC Clang https://reviews.llvm.org/D45699 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits