Xbase++ doesn't support the :super method of getting at an object's super class. In Class(y), you might write some code like:
Create Class Bar Inherits Foo
// ...
Method wibble
// ...
End Class
// ...
Method wibble()
// ...
::super:wibble()
// ...
Return( self )
As you can see, we are only inheriting from a single class so it is obvious what :super should be. However, in Xbase++, you have to explicitly "cast" the super class. For example:
Method wibble()
// ...
::Foo:wibble()
// ...
Return( self )
Thankfully, Class(y) supports both methods of making super calls, so, if your code allows it, you can use the explicit cast in all your code (this is known as "Reference Objects" in Class(y)).
Another possible workaround is to use the pre-processor to define :super on a pre-class basis. Note that this workaround is only of use if you have one class per source file (a good idea anyway when working with Class(y)) and you don't use multiple inheritance.
The pre-processor directive is:
#xcommand CREATE CLASS <x> <inh:FROM,INHERIT> <y> ;
=> ;
#xtranslate :super => :<y> ;;
CLASS <x> FROM <y>
Using the above, from the point of the class definition onwards, all calls to :super will be translated into calls to a cast to the named super class.
It should be noted that the above won't help you if you've used multiple inheritance and, in general, the above is an inelegant fix at best. With some luck Xbase++ will support :super in a future release.