When an object inherits from a parent defined in another module, the methods of that parent cannot be overridden.
This happens because the parent's methods are added to the object's symbol table as methods, rather than as inheritedmethods. When the overriding definition is encountered, it is rejected as a duplicate definition.
An example demonstrating the problem is the beginningStudent dialect, which inherits from minispec.methods. This parent defines list, list(_), etc. The beginningStudent dialect wants to override these methods.
The current workaround is to exclude these methods from the inheritance. This isn't bad, but ought to be unnecessary.
When an object inherits from a parent defined in another module, the methods of that parent cannot be overridden.
This happens because the parent's methods are added to the object's symbol table as methods, rather than as inherited methods. When the overriding definition is encountered, it is rejected as a duplicate definition.
An example demonstrating the problem is the beginningStudent dialect, which inherits from
minispec.methods
. This parent defineslist
,list(_)
, etc. The beginningStudent dialect wants to override these methods.The current workaround is to exclude these methods from the inheritance. This isn't bad, but ought to be unnecessary.