On 2013-06-04 13:26, Manu wrote:

This is a great idea. If final-by-default is ultimately rejected, I'll
definitely try this out.
That said, it only solves half the problem, that is, internal
programmers forgetting to mark their functions final (and assuming they
also remember 'checkVirtual!' in their moules).
It offers nothing to address the 3rd party library problem.

Yes, exactly. If you override RTInfo in druntime I think it will work automatically. Currently RTInfo looks like this:

template RTInfo(T)
{
    enum RTInfo = null;
}

Override it to look like this:

template RTInfo(T)
{
    enum RTInfo = checkVirtual!(T);
}

If this doesn't work you could create a tool which imports all modules in the source code and calls the function for all modules.

--
/Jacob Carlborg

Reply via email to