Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "OCL/New and Noteworthy/Helios"

(OCL 3.0.0 API Changes)
Line 10: Line 10:
  
 
One of the main goal to achieve in the MDT-OCL 3.0.0 release is migrating all grammars and parsing infrastructure so that they are based on the last version of LPG 2, whose runtime is sensibly improved and will allow to introduce a fancy textual OCL editor which will help the user to create OCL expressions. An OCL extending language will need to change their grammars/parsing infrastructure if they want to extend OCL in 3.0.0. A changes log and some advice for OCL extenders have been registered here (not written yet).
 
One of the main goal to achieve in the MDT-OCL 3.0.0 release is migrating all grammars and parsing infrastructure so that they are based on the last version of LPG 2, whose runtime is sensibly improved and will allow to introduce a fancy textual OCL editor which will help the user to create OCL expressions. An OCL extending language will need to change their grammars/parsing infrastructure if they want to extend OCL in 3.0.0. A changes log and some advice for OCL extenders have been registered here (not written yet).
 +
 +
A [[MDT-OCL_3.0.0_Migration_Guide| migration guide]] is under construction.
  
 
==Milestone 2==
 
==Milestone 2==

Revision as of 02:19, 16 October 2009

Eclipse OCL New and Noteworthy items for the Helios release.

The Helios MDT-OCL release will be 3.0.0 rather than 2.0.0, since the Galileo plug-ins contained a mix of 1.3.0 and 2.0.0 versions. The 2.0.0 versions were mandated by a major version change in UML2.

Since MDT-OCL is a project on which several subprojects of Eclipse Modeling Project rely, a maintenance 1.4.0 version release will also be shipped in Helios.

OCL 3.0.0 API Changes

As a major release's change, MDT-OCL 3.0.0 is expected to break API. You can check all API changes under discussion here.

One of the main goal to achieve in the MDT-OCL 3.0.0 release is migrating all grammars and parsing infrastructure so that they are based on the last version of LPG 2, whose runtime is sensibly improved and will allow to introduce a fancy textual OCL editor which will help the user to create OCL expressions. An OCL extending language will need to change their grammars/parsing infrastructure if they want to extend OCL in 3.0.0. A changes log and some advice for OCL extenders have been registered here (not written yet).

A migration guide is under construction.

Milestone 2

This milestone is pending.

invalid/Invalid/OclInvalid resolved

Bugzillas: 282882 288526

The OMG OCL 2.0 specification is very unclear as to the relative status of invalid objects and types. The tentative OCL 2.1 specification is little better.

The problem is easily understood by contrasting invalid with the uncontentious null: null is the null object that is the sole instance of the OclVoid which is the sole instance of VoidType meta-class.

Section 8.2 tends to suggest that: OclInvalid is the invalid object that is the sole instance of Invalid which is the sole instance of the InvalidType meta-class. This is what MDT-OCL 1.3.0 realises.

Section 11.2.4 and 11.2.5 are much more consistent in preferring: invalid is the invalid object that is the sole instance of OclInvalid which is the sole instance of the InvalidType meta-class. This is the revised implementation for MDT-OCL 3.0.0.

Beware. This change has a significant API incompatibility; the OCLStandardLibrary methods getOclInvalid and getInvalid have interchanged semantics. All calls to getOclInvalid and getInvalid should be reviewed, since errors may be silent. Concrete syntax changes are less likely to cause trouble.

Comments parsed

Bugzilla: 286724

Comments are now parsed as LPG Token Adjuncts enabling tools that want access to comments to find them.

static features supported for the UML binding

Bugzilla: 285633

The proposed OCL enhancement to allow a 'static' keyword prefix to a 'def' constraint is implemented for the UML binding, unless ParsingOptions.SUPPORT_STATIC_FEATURES is set false in the Environment, in which case an error is generated.

Ecore does not support static EStructuralFeatures and so use of 'static' gives an error when the ECore binding is used.

setStatic, isConstraint and isPackage are added to the UMLReflection API.

CST inelegancies removed

Bugzilla: 287993

@pre is now represented by a non-null rather than null IsMarkedPreCS object. Previously this was coded by a true/false value of the IsMarkedPreCS.isPre field. Analyzer code explicitly handling IsMarkedPreCS objects must be revised to handle the null object logic.

InvCS, DefCS, InitCS and DerCS are now maintained in a PropertyContextCS.constraints or ClassifierContextDecl.constraints array. The reverse lexical order linked list daisy chain is no longer supported.

PathNameCS.simpleNames and StateExpCS.simpleNames replace PathNameCS.sequenceOfNames and StateExpCS.sequenceOfNames. This changes a List<String> to a List<SimpleNameCS> which avoids loss of IToken context.

Back to the top