blob: 97582d4585ab272d23cccae1b0ceb86fee633fb0 [file] [log] [blame]
package overloads : ov = 'http:/overloads'
{
class SuperClass
{
operation notOverloaded(par : SubClass) : String
{
body: 'SuperClass';
}
operation overloaded(par : SuperClass) : String
{
body: 'SuperClass';
}
}
class SubClass extends SuperClass
{
invariant NotOverloadedIsSuper: self.notOverloaded(self) = 'SuperClass';
invariant OverloadedIsSub: self.overloaded(self) = 'SubClass';
invariant CastSourceNotOverloadedIsSuper: self.oclAsType(SuperClass).notOverloaded(self) = 'SuperClass';
invariant CastSourceOverloadedIsSub: self.oclAsType(SuperClass).overloaded(self) = 'SubClass';
invariant CastParameterNotOverloadedIsSub: self.notOverloaded(self.oclAsType(SuperClass)) = 'SubClass';
invariant CastParameterOverloadedIsSub: self.overloaded(self.oclAsType(SuperClass)) = 'SubClass';
-- SuperClass::notOverloaded(par : SuperClass) is not resolvable
-- invariant CastSourceAndParameterNotOverloadedIsSuper: self.oclAsType(SuperClass).notOverloaded(self.oclAsType(SuperClass)) = 'SuperClass';
invariant CastSourceAndParameterOverloadedIsSub: self.oclAsType(SuperClass).overloaded(self.oclAsType(SuperClass)) = 'SubClass';
operation notOverloaded(par : SuperClass) : String
{
body: 'SubClass';
}
operation overloaded(par : SuperClass) : String
{
body: 'SubClass';
}
}
}