[PATCH] D53025: [clang-tidy] implement new check for const return types.

Jonas Toth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 22 13:56:29 PDT 2018


JonasToth added a comment.

> Also, the template version (whether trailing or normal return) does not trigger the matchers at all, from which I surmise that clang doesn't consider the type const qualified when it is not materialized with an actual type. I've noted as much in the comments, but please correct me if I've misunderstood.

If the template is not instantiated no information on `const` exists and
that might vary between instantiations anyway (if you don't explicitly
write `const T`). It would be an interesting test to try and break the
check with an explicit `const` template and instantiaions with `const`.
(e.g. `template <typename T> const T my_function();` and an
instantiation like `gsl::span<const int>`)

> Finally, as for triggering: I ran this over Google's C++ codebase and found quite a few hits (10k < X < 100k;  not sure I'm allowed to specify a more precise value for X, but if you need it,  let me know and I'll ask).  I sampled 100 of them and confirmed that all were correct.
> 
> I also looked at LLVM and found ~130 hits. I sampled 10 and again found them all correct. I'm happy to post all of the llvm hits if you think that would be helpful.

Did you try the transformation and is it correct (does not break code)?
Enough to check on LLVM :)


Repository:
  rCTE Clang Tools Extra

https://reviews.llvm.org/D53025





More information about the cfe-commits mailing list