[Development] Disavowing the Lakos Rule for Q_ASSERT

Thiago Macieira thiago.macieira at intel.com
Tue Aug 27 01:08:13 CEST 2024


On Monday 26 August 2024 15:47:10 GMT-7 Ville Voutilainen wrote:
> On Mon, 26 Aug 2024 at 22:29, Giuseppe D'Angelo via Development
> 
> <development at qt-project.org> wrote:
> > Il 26/08/24 19:56, Thiago Macieira ha scritto:
> > > I'd like to request Qt code not obey that rule. In my opinion, it's a
> > > defect in the contract implementation rather than on Qt code. The*pre* 
> > > condition indicates something that must be true before the method is
> > > called and therefore the method's own noexcept specification does not
> > > apply*yet*.> 
> > As far as I've understood, that's only part of the issue. The other part
> > of the issue is that code calling the function may break: if you turn
> > the failed precondition check into an exception, the exception handling
> > will need to bubble it up through code which may not have set up the
> > correct unwinding state -- because it rightfully assumed that no
> > exception would escape out of a noexcept function.
> 
> A contract violation turned into an exception cannot escape out of a
> noexcept function. So it won't bubble up.

I think that's a mistake, but since I don't use exceptions, I also don't care. 
Don't use the violations-become-exceptions mode or do accept that that turns 
into a std::terminate().

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Principal Engineer - Intel DCAI Platform & System Engineering
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5152 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/development/attachments/20240826/eb406034/attachment-0001.bin>


More information about the Development mailing list