Thread overview
[Issue 6278] Regression(2.054 beta): 'in' contract inheritance doesn't work with safe code
Jun 25, 2016
Walter Bright
Jun 25, 2016
yebblies
Jun 25, 2016
Walter Bright
Dec 17, 2022
Iain Buclaw
Dec 17, 2022
Iain Buclaw
June 18, 2014
https://issues.dlang.org/show_bug.cgi?id=6278

hsteoh@quickfur.ath.cx changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |safe
                 CC|                            |hsteoh@quickfur.ath.cx

--
June 25, 2016
https://issues.dlang.org/show_bug.cgi?id=6278

--- Comment #13 from Walter Bright <bugzilla@digitalmars.com> ---
I'm beginning to think the only safe solution is to have assert()s in contracts throw ContractException, and that is the only exception ignored when only one contract of a set needs to pass.

--
June 25, 2016
https://issues.dlang.org/show_bug.cgi?id=6278

--- Comment #14 from yebblies <yebblies@gmail.com> ---
That's what I was thinking 5 years ago!

--
June 25, 2016
https://issues.dlang.org/show_bug.cgi?id=6278

--- Comment #15 from hsteoh@quickfur.ath.cx ---
Shouldn't it be ContractError?

--
June 25, 2016
https://issues.dlang.org/show_bug.cgi?id=6278

--- Comment #16 from Walter Bright <bugzilla@digitalmars.com> ---
(In reply to hsteoh from comment #15)
> Shouldn't it be ContractError?

That was my thought, too. The problem with Error (and ContractError is derived from Error) is that it is not necessary for unwinding to occur, i.e. no destructors necessarily get called between the throw and the catch.

I am concerned this may leave the program in an indeterminate state if ContractErrors are caught and then the program proceeds as normal.

Hence ContractException. (yes, yebblies, it was your idea!)

--
December 17, 2022
https://issues.dlang.org/show_bug.cgi?id=6278

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P2                          |P3

--
December 17, 2022
https://issues.dlang.org/show_bug.cgi?id=6278

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1
           Severity|normal                      |regression

--