njames93 added a comment.
In D147924#4255209 <https://reviews.llvm.org/D147924#4255209>, @PiotrZSL wrote:
> Problem is that you may have specialization of Bar class wihtout bar base,
> and that specialization can be local to some compilation unit.
> Like:
>
> template<>
> struct Bar<int> {
> void bar(); // function wihout virtual or no function at all.
> };
>
> And now your fix (override) won't compile.
>
> Only configuration option possible to be done, is to check template
> instantiations or not, but this going to produce false-positives.
> And probably we don't want false-positives in this check.
My idea was to not check any template instantiations, instead look for template
definitions with a template dependent base class that has potential override
candidates.
I'd argue a (likely very rare) false positive that would prevent compilation is
better than not diagnosing and then potentially(due to a later refactor)
getting a near miss override candidate going undiagnosed and breaking the
codebase.
It could also be nicer to just emit a warning with no fix, or a fix added to a
note explaining the situation. (notes fixes aren't automatically applied when
running clang tidy(and clang) for this reason.
Given the contention that is why i suggested this should just be user
configurable.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D147924/new/
https://reviews.llvm.org/D147924
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits