An interface defines an object type, and as such it defines the predicates and properties that such objects have.
For convenience an interface is however
also a scope that can declare constants and domains, but these constants and domains belongs to the scope not to the interface type (and they are not accessible through the objects).
So an interface definition is a single textural construction that defines two things, an object type and a static/global scope.
We have no intensions about extending object types to carry more than the predicates and properties of the corresponding objects.
Likewise we have no intensions about extending an synonym type to do more than defining a synonym of a type.
So the definition
Code: Select all
domains
obj_unsigned = obj{unsigned}.
Defines a synonym of the type, but it is not the type that contains the
myType domain, so you cannot write:
But you can define this synonym type (i.e. because is it a type):
Code: Select all
domains
myType_unsigned = obj{unsigned}::myType.
You may also be able to handle things by opening
obj{unsigned}.