To make inline functions useful and predictable I inline them always (it is not just a hint as in C++) and such functions have draconian requirements — just single expression, parameters can be used once at most, no static data used and only standalone functions can be inlined. After reshaping
assert to meet those criteria it looks as following:
inline def assert(cond ?Bool,msg String = "", details: String ... = ) Void %% this code will be put instead of the call => assertPassed(cond) ? void : fail(msg,*details);
I did some unscientific tests and I was happy to observe there was no test running slower, in some cases I saved 25% of running time. No complains from me.