-- Prior to the Bug 401953 fix: the code takes 6 seconds to parse and each extra "0 + let a = 0 in" doubles the parse time | |
-- POst fix the parse time is just overhead and the extra let's cost just about nothing. | |
0 + let a = 0 in | |
0 + let a = 0 in | |
0 + let a = 0 in | |
0 + let a = 0 in | |
0 + let a = 0 in | |
0 + let a = 0 in | |
0 + let a = 0 in | |
0 + let a = 0 in | |
enclosingOperand.combinedFragment->notEmpty() and | |
let parentMyInteraction : Set(MyInteraction) = enclosingOperand.combinedFragment | |
->closure(enclosingOperand.combinedFragment) | |
->collect(enclosingMyInteraction) | |
.oclAsType(MyInteraction) | |
->asSet() | |
in parentMyInteraction->size() = 1 | |
and let peerMyInteractions : Set(MyInteraction) = parentMyInteraction | |
->union(parentMyInteraction | |
->collect(_'context') | |
->collect(behavior) | |
->select(oclIsKindOf(MyInteraction)) | |
.oclAsType(MyInteraction) | |
->asSet()) | |
->asSet() | |
in peerMyInteractions->notEmpty() | |
and let MyCombinedFragments1 : Set(MyCombinedFragment) = peerMyInteractions.fragment | |
->select(oclIsKindOf(MyCombinedFragment)) | |
.oclAsType(MyCombinedFragment) | |
->asSet() | |
in MyCombinedFragments1->notEmpty() | |
and MyCombinedFragments1 | |
->closure(operand.fragment | |
->select(oclIsKindOf(MyCombinedFragment)) | |
.oclAsType(MyCombinedFragment)) | |
->asSet() | |
.operand.fragment | |
->select(oclIsKindOf(MyContinuation)) | |
.oclAsType(MyContinuation) | |
->asSet() | |
->forAll(c | (c.name = self.name implies c.covered | |
->asSet() | |
->forAll(cl | self.covered | |
->asSet() | |
->select((represents = cl.represents and selector = cl.selector)) | |
->asSet() | |
->size() = 1) | |
and self.covered | |
->asSet() | |
->forAll(cl | c.covered | |
->asSet() | |
->select((represents = cl.represents and selector = cl.selector)) | |
->asSet() | |
->size() = 1))) |