Enscript does not check for accessibility when passing functions to various invocation functions.
class A { protected void ProtectedMethod() { Print("Hello from protected method."); } } void Fn(A a) { a.ProtectedMethod(); // compile error GetGame().GetCallqueue().CallLater(a.ProtectedMethod, 500); // ok, runs fine. GetGame().GetScriptModule().Call(a, "ProtectedMethod", null); // ok, runs fine. }
The first call correctly diags inaccessibility.
The second one, compiles fine, it should be throwing a compile error just like the first one.
The last one, compiles fine, it should most likely also throw a compile error, though if RTTI saves accessibility modifiers, a vm exception would be more proper (as this is more or less a reflected call). Here's a pastebin with occurances of this in the game code (excuse the typo for the 'in' instead of 'is' in the diagnostics :D)