Issue 7465: OclMessageArg metaclass that is currently defined, could be removed. (ocl2-ftf) Source: Klasse Objecten (Dr. Jos Warmer, j.warmer@klasse.nl) Nature: Uncategorized Issue Severity: Summary: 11. The OclMessageArg metaclass that is currently defined, could be removed. We propose the configuration depicted in figure 1, together with the following constraints. Note that a similar set of constraint must be added to chapter "The Use of Ocl Expressions in UML Models", depending on the exact alignment with the UML metamodel. Also note that both the first and second constraint of OclMessageExp on page 54 of the final adopted spec need to be changed: "arguments->forAll( a | a.getType() ...." should be "arguments->forAll( a | a.type ....". -- an unspecified value expression may not have an applied property context UnspecifiedValueExp 10 June 2004, page 2 of 22 Klasse Objecten © Copyright Klasse Objecten inv: self.appliedProperty->isEmpty() -- an unspecified value expression may not be used anywhere but as -- argument to an OclMessageExp context OclExpression inv: not appliedProperty.oclIsTypeOf(UnspecifiedValueExp) context LoopExp inv: not body.oclIsTypeOf(UnspecifiedValueExp) context VariableDeclaration inv: not initExpression.oclIsTypeOf(UnspecifiedValueExp) context LoopExp inv: iterators->forAll(i | not i.oclIsTypeOf(UnspecifiedValueExp)) context IterateExp inv: not result.oclIsTypeOf(UnspecifiedValueExp) context OperationCallExp inv: arguments->forAll( i | not i.oclIsTypeOf(UnspecifiedValueExp)) context NavigationCallExp inv: qualifiers->forAll( i | not i.oclIsTypeOf(UnspecifiedValueExp)) context IfExp inv: not thenExpression.oclIsTypeOf(UnspecifiedValueExp) context IfExp inv: not elseExpression.oclIsTypeOf(UnspecifiedValueExp) context IfExp inv: not condition.oclIsTypeOf(UnspecifiedValueExp) context LetExp inv: not in.oclIsTypeOf(UnspecifiedValueExp) Resolution: Revised Text: 1) Remove the class description and well-formedness rules for OclMessageArg. 2) Update the figure 9 (The abstract syntax of Ocl messages) as follows: UnspecifiedValueExp CallOperationAction CallSignalAction Actions taken: June 10, 2004: received issue November 1, 2005: closed issue Discussion: Resolution: OclMessageArg is removed. The link between the message and its arguments (OclExxpressions) is now direct as it is between OperationCallExp and the arguments. No explicit constraint to the metaclass UnspecifiedValueExp has been added in order not to restrict potential usages of this class in OCL language extensions. End of Annotations:===== clMessageArg metaclass that is currently defined, could be removed. We propose the configuration depicted in figure 1, together with the following constraints. Note that a similar set of constraint must be added to chapter "The Use of Ocl Expressions in UML Models", depending on the exact alignment with the UML metamodel. Also note that both the first and second constraint of OclMessageExp on page 54 of the final adopted spec need to be changed: "arguments->forAll( a | a.getType() ...." should be "arguments->forAll( a | a.type ....". -- an unspecified value expression may not have an applied property context UnspecifiedValueExp 10 June 2004, page 2 of 22 Klasse Objecten © Copyright Klasse Objecten inv: self.appliedProperty->isEmpty() -- an unspecified value expression may not be used anywhere but as -- argument to an OclMessageExp context OclExpression inv: not appliedProperty.oclIsTypeOf(UnspecifiedValueExp) context LoopExp inv: not body.oclIsTypeOf(UnspecifiedValueExp) context VariableDeclaration inv: not initExpression.oclIsTypeOf(UnspecifiedValueExp) context LoopExp inv: iterators->forAll(i | not i.oclIsTypeOf(UnspecifiedValueExp)) context IterateExp inv: not result.oclIsTypeOf(UnspecifiedValueExp) context OperationCallExp inv: arguments->forAll( i | not i.oclIsTypeOf(UnspecifiedValueExp)) context NavigationCallExp inv: qualifiers->forAll( i | not i.oclIsTypeOf(UnspecifiedValueExp)) context IfExp inv: not thenExpression.oclIsTypeOf(UnspecifiedValueExp) context IfExp inv: not elseExpression.oclIsTypeOf(UnspecifiedValueExp) context IfExp inv: not condition.oclIsTypeOf(UnspecifiedValueExp) context LetExp inv: not in.oclIsTypeOf(UnspecifiedValueExp)