dcoughlin added a comment.
In https://reviews.llvm.org/D26768#619222, @malcolm.parsons wrote:
> In https://reviews.llvm.org/D26768#618651, @dcoughlin wrote:
> > The definite false positives were cases where the programmer seemed aware
> > of the semantics of virtual calls during construction/destruction and had
> > each subclass explicitly call its own version of the virtual method in
> > question.
> How is this avoiding the check for a qualifier on the call?
> if (CME->getQualifier())
> callIsNonVirtual = true;
They didn't use the qualified version. Rather, each class had duplication of
the same logic calling the virtual method its individual
constructor/destructor. In the cases I examined either the virtual method
didn't call super (most common pattern) or it did and was idempotent if called
>> The likely false positives were cases where there was no subclass of the
>> constructed class that overrode the method in question.
> I'd like to be told about these so that the class can be marked final.
I agree, but this produces too many alarms to be on by default in the analyzer.
I put the check in it in the 'optin' package so individual projects can decide
whether they want to enforce this rule or not.
cfe-commits mailing list