www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 20784] New: Assert expression specification needs to be updated

https://issues.dlang.org/show_bug.cgi?id=20784

          Issue ID: 20784
           Summary: Assert expression specification needs to be updated
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: minor
          Priority: P1
         Component: dlang.org
          Assignee: nobody puremagic.com
          Reporter: andrej.mitrovich gmail.com

https://dlang.org/spec/expression.html#assert_expressions

 The first AssignExpression must evaluate to true. If it does not, an Assert
Failure has occurred and the program enters an Invalid State.
 Undefined Behavior: Once in an Invalid State the behavior of the continuing
execution of the program is undefined.
This in theory is true. And https://github.com/dlang/dmd/pull/6896, if merged, would actually make it really true. (It would be great if we got some progress on that PR). However see my next comment:
 Do not attempt to resume normal execution after an Assert Failure.
But then what is the point of `Runtime.extendedModuleUnitTester`? If an application enters an Invalid state then after the very first assertion failure it wouldn't make sense to continue running tests in other modules. But Druntime explicitly supports this feature..
 AssertExpression has different semantics if it is in a unittest or in contract.
The documentation doesn't actually list what the differences are. But maybe it should just link to the contracts page? --
Apr 28 2020