| 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'; |
| } |
| } |
| } |