OCL 2.5 RTF Avatar
  1. OMG Issue

OCL25 — OCL 2.2 Missing definition of navigation

  • Key: OCL25-9
  • Legacy Issue Number: 15790
  • Status: open  
  • Source: Model Driven Solutions ( Ed Willink)
  • Summary:

    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
    dynamic determination.

    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