On Mon, Dec 7, 2015 at 9:25 AM, Jens Alfke <j...@mooseyard.com> wrote: > > On Dec 7, 2015, at 9:21 AM, Dmitri Gribenko <griboz...@gmail.com> wrote: > > Yes you can. Maybe not with the current XCTest, but there's nothing that > prevents unit-testing traps in principle. The standard library is already > doing that. See test/1_stdlib/ArrayTraps.swift.gyb for some examples: > > > Nice! But completely undocumented, AFAIK. This is the first I’ve heard of > the term “trap”
We don't call them "crashes", because the word "crash" is typically used to describe non-reliable program termination because of an invalid memory unsafe operation that lead to memory corruption. Traps are guaranteed to happen, and they *prevent* memory unsafe operations to happen, terminating the process before they happen. > or a way to handle them. The docs I’ve seen just say that an > assertion failure terminates the process. Traps do terminate the process, without any way to recover, and that is exactly what is happening in the standard library tests. There are just two processes -- one is performing a trap, and another one is the test harness that verifies that the other process terminated. > Is there any more info about traps, other than “Read the source, Luke?” ;-) What would you like to know? Dmitri -- main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if (j){printf("%d\n",i);}}} /*Dmitri Gribenko <griboz...@gmail.com>*/ _______________________________________________ swift-users mailing list swift-users@swift.org https://lists.swift.org/mailman/listinfo/swift-users