martong added inline comments.
================ Comment at: clang/lib/StaticAnalyzer/Checkers/StdLibraryFunctionsChecker.cpp:882 + const QualType SizePtrTy = getPointerTy(SizeTy); + const QualType SizePtrRestrictTy = getRestrictTy(SizePtrTy); ---------------- balazske wrote: > martong wrote: > > balazske wrote: > > > Another idea: Have a class that handles all the variants (simple, > > > pointer, const pointer, const restrict pointer, restrict). It can have > > > get functions that compute the type if not done yet, or get every variant > > > at first time even if it is later not used (or has no sense). > > > For example create it like `TypeVariants SizeTy{ACtx.getSizeType()};` and > > > then call `SizeTy.getType()`, `SizeTy.asPtr()`, `SizeTy.asPtrRestrict()`, > > > ... . > > > ``` > > I'd rather keep the current form, because I think it makes it easier to > > compose types from different base types (and it is similar to the > > ASTMatchers in this sense). > If I got it correctly, the problem with my approach above is that it has > separate functions for every special type variant. The current is acceptable > but looks not fully uniform to me (the type has a `withConst` and for getting > a pointer or restrict there is a function call). We could have something like > a "`TypeBuilder`" that has methods `withConst()`, `withRestrict()`, > `withPointerTo()` (these can return a TypeBuilder too) and finally a > (omittable) `getType()` that returns `Optional<QualType>`. > ``` > const QualType ConstVoidPtrRestrictTy = TypeBuilder{ACtx, > VoidTy}.withConst().withPointerTo().withRestrict().getType(); > ``` > Yeah, `.withConst()` is making it nonuniform currently, you are right. What if we had `getConstTy()` that receives an optional? Composability would be just perfect in this case :) ``` Optional<QualType> ConstPthread_attr_tPtrTy = getPointerTy(getConstTy(Pthread_attr_tTy)); ``` WDYT? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D84415/new/ https://reviews.llvm.org/D84415 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits