On Monday, 11 July 2016 at 16:27:38 UTC, Andrew Godfrey wrote:
[...]
* It must not be ignorable by the compiler.
* It must generate an error if that compiler would be unable to
do the TCO. Otherwise, the compiler *may* (not "must") apply
the TCO, unless compiled under (some optimization level, please
specify), in which case it *must* apply TCO.
One difficulty with this is the words "that compiler". I.e.
other compilers are free to be unable to make the TCO. This
means that by using this feature, you have made your code
non-portable.
I think that noticing problems while porting it it's better than
having it crash unexpectedly as it would currently happen.
P.S. You have proposed annotating the function with @tco - it
seems more like it's the call site that needs to be annotated.
I'm not sure about how to do annotations on the call site. Would
a new keyword be required?