-
Key: OCL23-26
-
Legacy Issue Number: 14985
-
Status: closed
-
Source: Model Driven Solutions ( Dr. Edward Willink)
-
Summary:
11.2.3 states clearly that "Any property call applied on null results in OclInvalid, except for the operations oclIsUndefined() and oclIsInvalid()." This is being revised by Issue 14197 in OCL 2.3 to: "Any property call applied on OclVoid results in invalid, except for the operations oclIsUndefined(), oclIsInvalid(), =(OclAny) and <>(OclAny)."
11.2.4 states clearly that "Any property call applied on invalid results in OclInvalid, except for the operations oclIsUndefined() and oclIsInvalid()." This is being revised by Issue 14197 in OCL 2.3 to: "Any property call applied on OclInvalid results in invalid, except for the operations oclIsUndefined() and oclIsInvalid()."
Therefore invalid.oclIsTypeOf(OclInvalid) => invalid and null.oclIsTypeOf(OclVoid) => invalid.
But the above are widely used in the specification as for example:
"oclIsUndefined() : Boolean
Evaluates to true if the self is equal to OclInvalid or equal to null.
post: result = self.isTypeOf( OclVoid ) or self.isTypeOf(OclInvalid)"clearly expecting isTypeOf (a typo) to return true/false, not invalid sometimes.
Issue 14197 relaxed the OclVoid property list to allow = and <>. Perhaps all oclXXX operations should have an explicitly defined semantics for OclVoid and OclInvalid, supporting rather than denying reflective usage of the values as in self.isTypeOf( OclVoid ).
-
Reported: OCL 2.2 — Sun, 17 Jan 2010 05:00 GMT
-
Disposition: Resolved — OCL 2.3
-
Disposition Summary:
Merged with Issue 18437.
Disposition: See issue 18437 for disposition -
Updated: Fri, 6 Mar 2015 20:58 GMT
OCL23 — OCL 2.1 11.2 Conflicting {OclVoid, OclInvalid}::{oclIsTypeOf, oclIsKindOf, oclAsType} semantics
- Key: OCL23-26
- OMG Task Force: OCL 2.3 RTF