Issue 12526: Errors and anomalies in QVT 1.0 07-07-08 ZIP imperativeocl.ecore (qvt-rtf) Source: Model Driven Solutions (Dr. Edward Willink, ed(at)willink.me.uk) Nature: Uncategorized Issue Severity: Summary: Use of automated tooling to support comparison of the models developed initially as part of the Eclipse GMT/UMLX project and being transferred to the Eclipse QVT Declarative/QVT Operational Mappings Projects reveals the following errors and anomalies in emof.ecore in the 07-07-08 ZIP. Note that these errors and anomalies are not the same as those separately reported for the QVT_1.0.mdl from which the Ecore was notionally auto-generated. An Ecore file resolving these anomalies is attached. Resolution: These changes mostly affect non-normative files which were corrected when QVT 1.1 issued revised files based on Eclipse QVT contributions. However a few changes remain to be resolved in the main text. CatchExp.exceptionVariable/CatchExp.exception changes are Issue 15997 Remove UnpackExp is Issue 13268 Remove OrderedTupleType is Issue 13268 Remove OrderedTupleLiteralExp is Issue 13268 Remove OrderedTupleLiteralPart is Issue 13268 Add InstantiationExp.initializationOperation is Issue 19021 Revised Text: In Fig 8.5 • Position * and {ordered} unambiguously for BlockExp.body • Add Operation • Add unidirectional reference from InstantiationExp to Operation forward role initializationOperation [0..1] reverse role instantiationExp [*] In Fig 8.6 • remove spurious artifact at RHS • add CatchExp.exceptionVariable • change CatchExp.exception multiplicity to + • change ReturnExp.value multiplicity to 0..1 • remove UnpackExp and its associations In Fig 8.7 • remove OrderedTupleType and its associations • remove OrderedTupleLiteralExp and its associations • remove OrderedTupleLiteralPart and its associations In 8.2.2.7 ImperativeIterateExp change target : Variable [0..1] to target : Variable [0..1] {composes} In 8.2.2.8 SwitchExp change elsePart : OclExpresion {composes} [0..1] to elsePart : OclExpression {composes} [0..1] In 8.2.2.14 CatchExp and the QVT 1.1 models add exceptionVariable : Variable [0..1] In 8.2.2.23 InstantiationExp add initializationOperation : Operation [0..1] The initialization operation that uses the arguments to initialize the object after creation. The initialization operation may be omitted when implicit initialization occurs with no arguments. In 8.2.2.24 Typedef change condition: OclExpression [1]{composes} to condition: OclExpression [0..1]{composes} In 8.2.2.29 DictLiteralExp change part : DictLiteralPart [*] {composes,ordered} to part : DictLiteralPart [*] {composes} In the non-normative models change • add CatchExp.exceptionVariable • change CatchExp.exception multiplicity to + • add InstantiationExp.initializationOperation • remove UnpackExp • remove OrderedTupleType • remove OrderedTupleLiteralExp • remove OrderedTupleLiteralPart Actions taken: June 6, 2008: received issue July 15, 2014: closed issue Discussion: End of Annotations:===== m: "Ed Willink" To: Subject: Errors and anomalies in QVT 1.0 07-07-08 ZIP imperativeocl.ecore Date: Fri, 6 Jun 2008 20:37:19 +0100 X-Mailer: Microsoft Outlook, Build 10.0.6838 Thread-Index: AcjIDLuGtsLEFMn/SM+f/iqiRcxwrw== X-Plusnet-Relay: b092b536f847ef8f1f1ba49cd9b10a6b Use of automated tooling to support comparison of the models developed initially as part of the Eclipse GMT/UMLX project and being transferred to the Eclipse QVT Declarative/QVT Operational Mappings Projects reveals the following errors and anomalies in emof.ecore in the 07-07-08 ZIP. Note that these errors and anomalies are not the same as those separately reported for the QVT_1.0.mdl from which the Ecore was notionally auto-generated. An Ecore file resolving these anomalies is attached. 'nsURI' for 'ImperativeOCL' should be 'http://schema.omg.org/spec/QVT/1.0/imperativeocl.xml' rather than 'http://www.schema.omg.org/spec/QVT/1.0/imperativeocl' 'nsPrefix' for 'ImperativeOCL' should be 'impocl' rather than 'imperativeocl' 'name' for 'ImperativeOCL' should be 'ImperativeOCL' rather than 'imperativeocl' 'name' for 'TryExp.exceptClause' should be 'exceptClause' rather than undefined 'containment' for 'UnpackExp.targetVariable' should be 'false' rather than 'true' 'ordered' for 'DictLiteralExp.part' should be 'false' rather than 'true' 'lowerBound' for 'ReturnExp.value' should be '0' rather than '1' 'defaultValueLiteral' for 'AssertExp.severity' should be 'error' rather than undefined 'defaultValueLiteral' for 'VariableInitExp.withResult' should be 'false' rather than undefined 'eSuperTypes' for 'SwitchExp' should be 'ImperativeExpression' rather than 'CallExp','ImperativeExpression' Unnavigable 'opposite' of 'AltExp.body' should be modelled Unnavigable 'opposite' of 'AltExp.condition' should be modelled Unnavigable 'opposite' of 'AssertExp.assertion' should be modelled Unnavigable 'opposite' of 'AssignExp.defaultValue' should be modelled Unnavigable 'opposite' of 'AssignExp.left' should be modelled Unnavigable 'opposite' of 'AssignExp.value' should be modelled Unnavigable 'opposite' of 'BlockExp.body' should be modelled Unnavigable 'opposite' of 'CatchExp.exception' should be modelled Unnavigable 'opposite' of 'ComputeExp.body' should be modelled Unnavigable 'opposite' of 'ComputeExp.returnedElement' should be modelled Unnavigable 'opposite' of 'DictionaryType.keyType' should be modelled Unnavigable 'opposite' of 'DictLiteralExp.part' should be modelled Unnavigable 'opposite' of 'DictLiteralPart.key' should be modelled Unnavigable 'opposite' of 'DictLiteralPart.value' should be modelled Unnavigable 'opposite' of 'ImperativeIterateExp.target' should be modelled Unnavigable 'opposite' of 'ImperativeLoopExp.condition' should be modelled Unnavigable 'opposite' of 'InstantiationExp.argument' should be modelled Unnavigable 'opposite' of 'LogExp.condition' should be modelled Unnavigable 'opposite' of 'OrderedTupleLiteralExp.part' should be modelled Unnavigable 'opposite' of 'OrderedTupleLiteralPart.value' should be modelled Unnavigable 'opposite' of 'OrderedTupleType.elementType' should be modelled Unnavigable 'opposite' of 'RaiseExp.exception' should be modelled Unnavigable 'opposite' of 'SwitchExp.alternativePart' should be modelled Unnavigable 'opposite' of 'SwitchExp.elsePart' should be modelled Unnavigable 'opposite' of 'TryExp.exceptClause' should be modelled Unnavigable 'opposite' of 'TryExp.tryBody' should be modelled Unnavigable 'opposite' of 'UnlinkExp.item' should be modelled Unnavigable 'opposite' of 'UnlinkExp.target' should be modelled Unnavigable 'opposite' of 'VariableInitExp.referredVariable' should be modelled Unnavigable 'opposite' of 'WhileExp.body' should be modelled Unnavigable 'opposite' of 'WhileExp.condition' should be modelled ImperativeOCL.ecore