Addendum:
Another alternative would be to allow 'nomask' functions of the same
name in different inherit branches (i.e. *only* prohibit overriding them
at a *higher* level of the inherit tree), and treat calls to them with
the same logic as private/non-private.
The nomask keyword also would be a fitting name for "don't override",
and actually does exactly that, just *too* strictly by only allowing a
single nomask function of a certain name in the whole inheritance tree.
Even the precedence rules for inheritance ("2. nomask takes precedence
over non-nomask") could stay the same, as multiple nomask definitions
would still be covered by rule no. 3 "first inherit takes precedence".
regards,
Invis
PS. I opened a PR to extend the documentation in
/doc/concepts/overloading to include this behaviour.
PPS. I'm using the term "override" for what the ldmud documentation
calls "overload" -- this is a German vs. English thing: The English
"overload" is more what German software developers would typically refer
to as (compile-time polymorphism), i.e. the same function name with
different signatures (which LPC somewhat already has with varargs &
union types, so it isn't really a thing here), vs. the English use of
"override" for what Germans would call 'überladen' (i.e. literally
'over-load') for run-time polymorphism.