hokein added a comment.

>> In D55044#1329604 <https://reviews.llvm.org/D55044#1329604>, @hokein wrote:
>>  In fact, the existing modernize-make-unique can be configured to support 
>> absl::make_unique, you'd just need to configure the check option 
>> MakeSmartPtrFunction to absl::make_unique (this is what we do inside google).
> 
> See https://reviews.llvm.org/D52670#change-eVDYJhWSHWeW (the 
> getModuleOptions() part) on how to do that

Thanks! Yes, it is trivial to create an alias check, but if we want to support 
`WrapUnique`, I don't think this is a right way to go.

In D55044#1330102 <https://reviews.llvm.org/D55044#1330102>, @axzhang wrote:

> In D55044#1329604 <https://reviews.llvm.org/D55044#1329604>, @hokein wrote:
>
> > In fact, the existing `modernize-make-unique` can be configured to support 
> > `absl::make_unique`, you'd just need to configure the check option 
> > `MakeSmartPtrFunction` to `absl::make_unique` (this is what we do inside 
> > google).
> >
> > The biggest missing part of the `modernize-make-unique` is 
> > `absl::WrapUnique`, I think we should extend `MakeSmartPtrCheck` class 
> > (maybe add hooks) to support it.
>
>
> What is the best way to extend `MakeSmartPtrCheck`? The behavior I want to 
> achieve is that `absl::WrapUnique` is suggested when brace initialization is 
> used, but `absl::make_unique` is used in all other cases.


I think we'd need to add more interfaces to `MakeSmartPtrCheck` allowing 
subclasses to inject their logic to handle different initialization styles of 
`new` expression.

- `MakeSmartPtrCheck::replaceNew` is the interesting place
- we may split `MakeSmartPtrCheck::replaceNew` implementation into different 
methods (e.g. `handleCallInit`, `handleListInit`) which are corresponding to 
handle different `new` cases
- from my experience,  handling brace initialization is tricky, there are lots 
of corner cases, you can see the comments in `MakeSmartPtrCheck::replaceNew`


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

https://reviews.llvm.org/D55044



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

Reply via email to