On 08/02/2014 05:34 AM, Andrew Godfrey wrote:
Suppose I call some logging function which has a faulty assertion in it.
What about Walter's position prevents that assertion's effects from
escaping the logging function and infecting my code?

Nothing. Undefined behaviour is completely non-modular.

I know cross-module
optimization is hard hence this may be unlikely,

Inlining may happen.

but still it shows
something missing.

I know Walter has said repeatedly that at this point the program is
invalid, Implying that it deserves whatever happens to it. I suspect
this is a subtopic we should be discussing more directly. What are the
boundaries?

The semantics that are proposed to be pulled into the language spec are currently summarized as:

- In non-release mode, an assertion failure will abort the program (maybe by throwing an Error).

- In release mode, an assertion failure leads to undefined behaviour.

I.e. I think there aren't any 'boundaries', unless I am misunderstanding this term.

Reply via email to