An arbitrary "safe" swift function can also do that
func foo(count: Int) {
if count != 0 {
foo(count: count - 1)
}
}
I don't know if this is precedented or not: we may have one another more strict colour (or a language mode / compiler setting / lint rule) under which you won't be able calling C/C++/Obj-C or any other unsafe {...}
block.
bikeshedding:
utmostSafe func foo() {
unsafe { unsafeCall() } // error
}
/*safe*/ func foo() {
unsafe { unsafeCall() } // ok
}
unsafe func foo() {
unsafeCall() // non brainer
}
With this mode people would be totally protected from unsafety by paying the price of not being able calling C/C++/Obj-C, etc.
As I understand it we are talking here about memory safety only, and yes there are other types of safety ("crash safety", "trap safety", "hang safety", "realtime safety", "bug safety" to name a few).