I've randomly encountered a strange error, and I cannot find any explanation for it in the official documentation of syntax.
Essentially, a class cannot call function overload in a super-class if the class itself contains an override. Is this a bug? Is this on purpose? Take a look at B.otherThing()
below.
void main()
{
abstract class A {
// An abstract method for sub-classes
abstract void doThing(string a, size_t b);
// A convenience helper.
void doThing(string a) {
doThing(a, a.length);
}
}
class B : A {
// If this overload exists, something strange happens...
override
void doThing(string a, size_t b) {
}
void otherThing() {
// Error: `B.doThing(string a, ulong b)`
// is not callable using argument
// types `(string)`
doThing("hello");
super.doThing("hello"); // OK
}
}
}