Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

Jump to: navigation, search

OCL/New and Noteworthy/2022-12

Eclipse OCL New and Noteworthy items for the 2022-12 (6.18.0) release.

Release Overview

This minor release fixes a few bugs.

Eclipse versions

The prevailing Eclipse OCL release candidate is auto-tested every week on Oxygen, Photon, 2018-09, 2018-12, 2019-03, 2019-06, 2019-09, 2019-12, 2020-03, 2020-06, 2020-09, 2020-12, 2021-03, 2021-06 and 2021-09 platforms using Jenkins on Linux and the prevailing Java/project versions for the release.

2021-12 release should be installable on Mars and Neon platforms provided Xtext 2.9 or greater is also installed.

The 2022-12 sources may only be buildable on 2022-12.

Java versions

Java 8 on Windows was used to develop and test the milestones of this release. Following the Eclipse platform migration to a Java 11 minimum, development now uses Java 11, although standalone tests continue to use Java 8.

Java 12 on Windows was briefly used to maintain and test the 2020-06 release candidates. It appears to work although Java code generation/compilation seems nearly three times slower - see Bug 565563.

Java 11 on Jenkins, Linux was used to build and test the release candidates.

The Classic Ecore/UML plugins have been tested on Mars, Neon, Oxygen and Photon and on a Java 5 Virtual Machine. Standalone execution requires only the org.eclipse.osgi plugin from Eclipse Kepler or a spoof of org.eclipse.osgi.util.NLS and org.eclipse.osgi.framework.

The Pivot plugins require at least a Java 8 Virtual Machine and at least Xtext 2.9.1. Testing on Oxygen has a couple of test failures. Testing on Mars and Neon has a few editor/console startup failures.

Milestone 1

A 6.18.0M1 was made available on 10-Jan-2022, but development reverted to 6.17.1.


When iterating an ordered collection, it is sometimes necessary to know the collection index of the iterator necessitating an inefficient and imprecise list search:

  aSequence->forAll(e | let index = aSequence->indexOf(e) in = index.toString()) 

The iterator declaration may be extended by a with keyword to include a co-iterator to make use of the precise value that the evaluator already knows.

  aSequence->forAll(e with index | = index.toString()) 

The co-iterator for Maps has been revised to be consistent; the previous usage of <- punctuation, rather than a with keyword, lacked mnemonic quality and consistency.

  aMap->forAll(key with value | key = value.toLower())

The primary iterator is over the collection view of the aggregate. The co-iterator is optional added-value.

ocl execute

The verify and help commands of the Standalone Application have been extended by the addition of an execute command. This can be useful to allow external scripts to test the Pivot OCL functionality and obtain textual or XMI representations of queries and/or results.


  • 519896 exists/forall may have three iterators
  • 571846 OCLThread intridiced to ease use of one OCL per thread
  • 574431 e.g. EInt and Integer now co-exist with fewer (? no) problems
  • 577427 null-free collections can be specified by a root package EAnnotation
  • 577614 ordered collections may have co-iterators
  • 577887 allInstances is now a regular metatype rather than magic static type
  • 577887 add BooleanType
  • 577887 use ThreadLocalExecutor to discover the allInstances() domain
  • 577928 OCL embedded in EAnnotations is now validated again
  • 578030 All referenceable Pivot AS elements now have xmi:ids
  • 577889 Code generated code now has consistent metatypes
  • 577902 Spurious static features eliminated from OCL Standard Library

Milestone 1a

To avoid confusion the Oct-2022 milestone 1 is named 1a.


  • 496810 Code generated code now has consistent metatypes
  • 541380 OCLstdlib editor no longer needs restarting to clear errors
  • 544796 OCL evaluations can now be executed standalone
  • 578117 Nullity of Collection no longer in diagnostics/code generation
  • 578981 Ecore to OCLinEcore serializer uses minimal qualification for qualified names
  • 579025 Stale error markers fixed (premature LUSSID creation avoided)
  • 579051 Inefficient creation of multiple orphanages fixed
  • 579152 OCLstdlib-defined classes may now have an instanceClassName
  • 580139 Type-typed arguments such as oclIsKindOf may be expressions
  • 580363 Saving an ASResource no longer relocates orphan references
  • 580407 Handling of wildcard type parameter simplified
  • 580419 Subtle issues with stale specializations fixed.
  • 580749 ElementLiteralExp added to allow any OCL result to be serialized.
  • 580755 UML 'alignment' abandoned; PivotStructural.ecore is now the master.
  • 580791 OCLExpression.typeValue rendered obsolete


  • 580143 Introduce oclBase() and oclExtensions() and oclExtensions()


  • 579604 use of org.apache.commons.lang eliminated avoiding 2022-06 installation inconvenience
  • 580795 documentation generator works again

Milestone 2

Milestone 3



Back to the top