ymandel marked an inline comment as done.
ymandel added inline comments.

================
Comment at: 
clang/lib/Analysis/FlowSensitive/Models/UncheckedOptionalAccessModel.cpp:262
 /// Returns true if and only if `Type` is an optional type.
 bool isOptionalType(QualType Type) {
   if (!Type->isRecordType())
----------------
ymandel wrote:
> ymandel wrote:
> > xazax.hun wrote:
> > > Why do we need two places to define what is an optional type? Would it be 
> > > possible to somehow reuse the Declaration matcher on the RecordDecel 
> > > here? Or would that be bad for performance?
> > Good point. I dismissed reusing the matcher here because of performance 
> > concerns -- setting up the match is expensive (in the constant-time sense 
> > but still a lot of overhead). But, we're already using matching quite a lot 
> > so I suspect it doesn't matter. Still, what about the reverse -- use this 
> > predicate in the matcher, which is faster while still ensuring consistent 
> > results?
> > 
> > That said, what I really want is for the matcher logic to be made available 
> > outside of the matcher framework -- I think `NamedDecl` should have the 
> > core logic (parallel to `getQualifiedNameAsString`) and that could be used 
> > elsewhere, including the matcher.
> regardless, the matcher is wrong (if we keep it): it should be `hasAnyName` 
> rather than `anyOf` and lots of `hasName`. not sure how I never caught that 
> earlier...
I've updated the matcher but otherwise left the code alone. I will send a 
followup patch that shares the code now that I understand how to avoid the 
mention of the libc++ internal names.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148344/new/

https://reviews.llvm.org/D148344

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to