Legacy Issue Number: 15790
Source: Model Driven Solutions ( Ed Willink)
Dot and arrow navigation have implied definitions in the non-normative clause 7, but nothing in the normative clauses.
Implicit collect is missing from clause 9, save for the throwaway final sentence "The mapping
is not formally defined in this document but should be obvious."
This mapping is far from obvious; if it was obvious it would be easy to define.
In particular it is important to define that a static syntax determination is made to ensure that:
anObject . feature => object navigation
anObject -> feature => implicit collection (of anObject's static ordering/uniqueness) containing a non-null anObject
aCollection -> feature (or iterator) => collection navigation
aCollection . feature (or iterator) => implicit collect = aCollection -> collect(feature or iterator)
(implicit source object implicit .) feature => object navigation
(implicit source collection implicit ->) feature (or iterator) => collection navigation
with the object/collection discrimination performed statically, so that the navigation
algorithm is statically determinate; only the dynamic dispatch on self is subject to
The conformance of a collection to OclAny must never used to allow object navigation on a collection. This avoids a syntax ambiguity for "aCollection . name" between implicit collect and object navigation of a collection feature, or between implicit collect and object navigation of an object feature.
Reported: OCL 2.1 — Sun, 31 Oct 2010 04:00 GMT
Updated: Thu, 8 Oct 2015 14:11 GMT