diff options
author | Ed Seidewitz | 2015-05-01 06:53:02 +0000 |
---|---|---|
committer | Arnaud Cuccuru | 2015-05-04 08:30:08 +0000 |
commit | ab647664e65adea6e9ca8163245691d762ee1eef (patch) | |
tree | ed7b612eada73dafba54f865b789270027e45270 /plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen | |
parent | 91552f4478f91c3781ec8f902e118ccbf501e9cf (diff) | |
download | org.eclipse.papyrus-ab647664e65adea6e9ca8163245691d762ee1eef.tar.gz org.eclipse.papyrus-ab647664e65adea6e9ca8163245691d762ee1eef.tar.xz org.eclipse.papyrus-ab647664e65adea6e9ca8163245691d762ee1eef.zip |
- Implemented the missing FeatureLeftHandSide::expression() operation.
- Corrected derivations of InputNamedExpression::isBitStringConversion
and isCollectionConversion.
- Corrected the parsing of numeric literal strings.
- Fixed the mapping for SequenceOperationExpression.
- Allowed for missing output arguments in the mapping for Tuple.
- Corrected the identification of the functions for unary operators.
- Eliminated the right-hand side structured activity node for an
AssignmentExpression, if it is empty.
- Handled element names more consistently in the mappings.
- Corrected errors in the setting of assigned value sources in do and
accept statements.
Change-Id: I1487adc7e6a560f10281d1238e2feca7520179b9
Signed-off-by: Ed Seidewitz <ed-s@modeldriven.com>
Reviewed-on: https://git.eclipse.org/r/46945
Tested-by: Hudson CI
Reviewed-by: Jeremie Tatibouet <jeremie.tatibouet@cea.fr>
Reviewed-by: Arnaud Cuccuru <arnaud.cuccuru@cea.fr>
Tested-by: Arnaud Cuccuru <arnaud.cuccuru@cea.fr>
Diffstat (limited to 'plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen')
8 files changed, 41 insertions, 54 deletions
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/AlfPackage.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/AlfPackage.java index bd4486a8f61..a578d8da38e 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/AlfPackage.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/AlfPackage.java @@ -23651,13 +23651,13 @@ public interface AlfPackage extends EPackage { int SEQUENCE_OPERATION_EXPRESSION___FIRST_PARAMETER = INVOCATION_EXPRESSION_OPERATION_COUNT + 3; /** - * The operation id for the '<em>Invocation</em>' operation. + * The operation id for the '<em>First Argument</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int SEQUENCE_OPERATION_EXPRESSION___INVOCATION = INVOCATION_EXPRESSION_OPERATION_COUNT + 4; + int SEQUENCE_OPERATION_EXPRESSION___FIRST_ARGUMENT = INVOCATION_EXPRESSION_OPERATION_COUNT + 4; /** * The operation id for the '<em>Sequence Operation Expression Referent Derivation</em>' operation. @@ -33628,15 +33628,6 @@ public interface AlfPackage extends EPackage { int FEATURE_LEFT_HAND_SIDE___ASSIGNED_NAME = LEFT_HAND_SIDE___ASSIGNED_NAME; /** - * The operation id for the '<em>Expression</em>' operation. - * <!-- begin-user-doc --> - * <!-- end-user-doc --> - * @generated - * @ordered - */ - int FEATURE_LEFT_HAND_SIDE___EXPRESSION = LEFT_HAND_SIDE___EXPRESSION; - - /** * The operation id for the '<em>Is Data Value Update</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> @@ -33673,13 +33664,13 @@ public interface AlfPackage extends EPackage { int FEATURE_LEFT_HAND_SIDE___FEATURE = LEFT_HAND_SIDE_OPERATION_COUNT + 1; /** - * The operation id for the '<em>Primary</em>' operation. + * The operation id for the '<em>Expression</em>' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated * @ordered */ - int FEATURE_LEFT_HAND_SIDE___PRIMARY = LEFT_HAND_SIDE_OPERATION_COUNT + 2; + int FEATURE_LEFT_HAND_SIDE___EXPRESSION = LEFT_HAND_SIDE_OPERATION_COUNT + 2; /** * The operation id for the '<em>Index</em>' operation. @@ -94896,14 +94887,14 @@ public interface AlfPackage extends EPackage { EOperation getSequenceOperationExpression__FirstParameter(); /** - * Returns the meta object for the '{@link org.eclipse.papyrus.uml.alf.SequenceOperationExpression#invocation() <em>Invocation</em>}' operation. + * Returns the meta object for the '{@link org.eclipse.papyrus.uml.alf.SequenceOperationExpression#firstArgument() <em>First Argument</em>}' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the '<em>Invocation</em>' operation. - * @see org.eclipse.papyrus.uml.alf.SequenceOperationExpression#invocation() + * @return the meta object for the '<em>First Argument</em>' operation. + * @see org.eclipse.papyrus.uml.alf.SequenceOperationExpression#firstArgument() * @generated */ - EOperation getSequenceOperationExpression__Invocation(); + EOperation getSequenceOperationExpression__FirstArgument(); /** * Returns the meta object for the '{@link org.eclipse.papyrus.uml.alf.SequenceOperationExpression#sequenceOperationExpressionReferentDerivation(org.eclipse.emf.common.util.DiagnosticChain, java.util.Map) <em>Sequence Operation Expression Referent Derivation</em>}' operation. @@ -96661,14 +96652,14 @@ public interface AlfPackage extends EPackage { EOperation getFeatureLeftHandSide__Feature(); /** - * Returns the meta object for the '{@link org.eclipse.papyrus.uml.alf.FeatureLeftHandSide#primary() <em>Primary</em>}' operation. + * Returns the meta object for the '{@link org.eclipse.papyrus.uml.alf.FeatureLeftHandSide#expression() <em>Expression</em>}' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @return the meta object for the '<em>Primary</em>' operation. - * @see org.eclipse.papyrus.uml.alf.FeatureLeftHandSide#primary() + * @return the meta object for the '<em>Expression</em>' operation. + * @see org.eclipse.papyrus.uml.alf.FeatureLeftHandSide#expression() * @generated */ - EOperation getFeatureLeftHandSide__Primary(); + EOperation getFeatureLeftHandSide__Expression(); /** * Returns the meta object for the '{@link org.eclipse.papyrus.uml.alf.FeatureLeftHandSide#index() <em>Index</em>}' operation. diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/FeatureLeftHandSide.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/FeatureLeftHandSide.java index 837e602111b..a522dd28239 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/FeatureLeftHandSide.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/FeatureLeftHandSide.java @@ -74,10 +74,10 @@ public interface FeatureLeftHandSide extends LeftHandSide { /** * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='\n\t\t\t\tPropertyAccessExpression{\n\t\t\t\t\tfeatureReference = self.feature(),\n\t\t\t\t\towner = self.owner()\n\t\t\t\t}'" + * @model annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='self.expression'" * @generated */ - Expression primary(); + Expression expression(); /** * <!-- begin-user-doc --> diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/InputNamedExpression.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/InputNamedExpression.java index 86774cf4414..6ca7be19096 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/InputNamedExpression.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/InputNamedExpression.java @@ -118,7 +118,7 @@ public interface InputNamedExpression extends SyntaxElement { * @see #setIsCollectionConversion(boolean) * @see org.eclipse.papyrus.uml.alf.AlfPackage#getInputNamedExpression_IsCollectionConversion() * @model transient="true" volatile="true" derived="true" - * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='\n let parameterType = self.tuple().invocation.parameterNamed(self.name).type() in\n parameterType <> null and self.expression.type <> null and\n self.isCollectionClass(parameterType) and \n not self.isCollectionClass(self.expression.type)'" + * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='\n let parameter = self.tuple().invocation.parameterNamed(self.name) in\n \tparameter <> null and\n \tlet parameterType = parameter.type() in\n\t parameterType <> null and self.expression.type <> null and\n\t self.isCollectionClass(parameterType) and \n\t not self.isCollectionClass(self.expression.type)'" * @generated */ boolean isIsCollectionConversion(); @@ -144,7 +144,7 @@ public interface InputNamedExpression extends SyntaxElement { * @see #setIsBitStringConversion(boolean) * @see org.eclipse.papyrus.uml.alf.AlfPackage#getInputNamedExpression_IsBitStringConversion() * @model transient="true" volatile="true" derived="true" - * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='\n let parameterType = self.tuple().invocation.parameterNamed(self.name).type() in\n parameterType <> null and self.expression <> null and\n (self.isBitStringType(parameterType) or \n self.isBitStringCollectionClass(parameterType)) and \n not self.isBitStringType(self.expression.type)'" + * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot derivation='\n let parameter = self.tuple().invocation.parameterNamed(self.name) in\n \tparameter <> null and\n \tlet parameterType = parameter.type() in\n\t parameterType <> null and self.expression <> null and\n\t (self.isBitStringType(parameterType) or \n\t self.isBitStringCollectionClass(parameterType)) and \n\t not self.isBitStringType(self.expression.type)'" * @generated */ boolean isIsBitStringConversion(); diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/SequenceOperationExpression.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/SequenceOperationExpression.java index 6be2c648582..d6d5cb30fb1 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/SequenceOperationExpression.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/SequenceOperationExpression.java @@ -199,15 +199,11 @@ public interface SequenceOperationExpression extends InvocationExpression { /** * <!-- begin-user-doc --> * <!-- end-user-doc --> - * <!-- begin-model-doc --> - * Return the behavior invocation expression that is equivalent to this - * sequence operation expression. - * <!-- end-model-doc --> * @model required="true" - * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='\n\t\t\t\tlet firstParameter = self.firstParameter() in\n\t\t\t\tlet namedExpression = NamedExpression{\n\t\t\t\t\tname = if firstParameter = null then null else firstParameter.name() endif,\n\t\t\t\t\texpression = self.primary.expression.reference()\n\t\t\t\t} in\n\t\t\t\tlet namedTuple = NamedTuple{\n\t\t\t\t\tnamedExpression = OrderedSet{namedExpression}->\n\t\t\t\t\t\tincludingAll(self.tuple.input)->includingAll(self.tuple.output)\n\t\t\t\t} in\n\t\t\t\t\tBehaviorInvocationExpression{\n\t\t\t\t\t\ttarget = self.operation.copy(),\n\t\t\t\t\t\treferent = self.referent,\n\t\t\t\t\t\ttuple = namedTuple,\n\t\t\t\t\t\towner = self\n\t\t\t\t\t}'" + * annotation="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot body='\n\t\t\t\tlet firstParameter = self.firstParameter() in\n\t\t\t\t\tOutputNamedExpression{\n\t\t\t\t\t\tname = if firstParameter = null then null else firstParameter.name() endif,\n\t\t\t\t\t\texpression = self.primary.expression,\n\t\t\t\t\t\tindex = null,\n\t\t\t\t\t\towner = self.tuple\n\t\t\t\t\t}'" * @generated */ - BehaviorInvocationExpression invocation(); + OutputNamedExpression firstArgument(); /** * <!-- begin-user-doc --> diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/AlfPackageImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/AlfPackageImpl.java index 048c338a114..6d5aad22107 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/AlfPackageImpl.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/AlfPackageImpl.java @@ -8118,7 +8118,7 @@ public class AlfPackageImpl extends EPackageImpl implements AlfPackage { * <!-- end-user-doc --> * @generated */ - public EOperation getSequenceOperationExpression__Invocation() { + public EOperation getSequenceOperationExpression__FirstArgument() { return getSequenceOperationExpression().getEOperations().get(4); } @@ -9717,7 +9717,7 @@ public class AlfPackageImpl extends EPackageImpl implements AlfPackage { * <!-- end-user-doc --> * @generated */ - public EOperation getFeatureLeftHandSide__Primary() { + public EOperation getFeatureLeftHandSide__Expression() { return getFeatureLeftHandSide().getEOperations().get(2); } diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/FeatureLeftHandSideImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/FeatureLeftHandSideImpl.java index cb90cf66f82..32e42730002 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/FeatureLeftHandSideImpl.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/FeatureLeftHandSideImpl.java @@ -127,23 +127,23 @@ public class FeatureLeftHandSideImpl extends LeftHandSideImpl implements Feature } /** - * The cached invocation delegate for the '{@link #primary() <em>Primary</em>}' operation. + * The cached invocation delegate for the '{@link #expression() <em>Expression</em>}' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see #primary() + * @see #expression() * @generated * @ordered */ - protected static final EOperation.Internal.InvocationDelegate PRIMARY__EINVOCATION_DELEGATE = ((EOperation.Internal)AlfPackage.eINSTANCE.getFeatureLeftHandSide__Primary()).getInvocationDelegate(); + protected static final EOperation.Internal.InvocationDelegate EXPRESSION__EINVOCATION_DELEGATE = ((EOperation.Internal)AlfPackage.eINSTANCE.getFeatureLeftHandSide__Expression()).getInvocationDelegate(); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - public Expression primary() { + public Expression expression() { try { - return (Expression)PRIMARY__EINVOCATION_DELEGATE.dynamicInvoke(this, null); + return (Expression)EXPRESSION__EINVOCATION_DELEGATE.dynamicInvoke(this, null); } catch (InvocationTargetException ite) { throw new WrappedException(ite); @@ -485,8 +485,8 @@ public class FeatureLeftHandSideImpl extends LeftHandSideImpl implements Feature return referent(); case AlfPackage.FEATURE_LEFT_HAND_SIDE___FEATURE: return feature(); - case AlfPackage.FEATURE_LEFT_HAND_SIDE___PRIMARY: - return primary(); + case AlfPackage.FEATURE_LEFT_HAND_SIDE___EXPRESSION: + return expression(); case AlfPackage.FEATURE_LEFT_HAND_SIDE___INDEX: return index(); case AlfPackage.FEATURE_LEFT_HAND_SIDE___LOCAL_NAME: diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/SequenceOperationExpressionImpl.java b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/SequenceOperationExpressionImpl.java index 099a8bcacdb..d23a7c611ee 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/SequenceOperationExpressionImpl.java +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/SequenceOperationExpressionImpl.java @@ -22,13 +22,13 @@ import org.eclipse.emf.ecore.util.EObjectValidator; import org.eclipse.papyrus.uml.alf.AlfPackage; import org.eclipse.papyrus.uml.alf.AssignedSource; -import org.eclipse.papyrus.uml.alf.BehaviorInvocationExpression; import org.eclipse.papyrus.uml.alf.ElementReference; import org.eclipse.papyrus.uml.alf.Expression; import org.eclipse.papyrus.uml.alf.ExtentOrExpression; import org.eclipse.papyrus.uml.alf.FeatureReference; import org.eclipse.papyrus.uml.alf.InvocationExpression; import org.eclipse.papyrus.uml.alf.LeftHandSide; +import org.eclipse.papyrus.uml.alf.OutputNamedExpression; import org.eclipse.papyrus.uml.alf.QualifiedName; import org.eclipse.papyrus.uml.alf.SequenceOperationExpression; @@ -258,23 +258,23 @@ public class SequenceOperationExpressionImpl extends InvocationExpressionImpl im } /** - * The cached invocation delegate for the '{@link #invocation() <em>Invocation</em>}' operation. + * The cached invocation delegate for the '{@link #firstArgument() <em>First Argument</em>}' operation. * <!-- begin-user-doc --> * <!-- end-user-doc --> - * @see #invocation() + * @see #firstArgument() * @generated * @ordered */ - protected static final EOperation.Internal.InvocationDelegate INVOCATION__EINVOCATION_DELEGATE = ((EOperation.Internal)AlfPackage.eINSTANCE.getSequenceOperationExpression__Invocation()).getInvocationDelegate(); + protected static final EOperation.Internal.InvocationDelegate FIRST_ARGUMENT__EINVOCATION_DELEGATE = ((EOperation.Internal)AlfPackage.eINSTANCE.getSequenceOperationExpression__FirstArgument()).getInvocationDelegate(); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ - public BehaviorInvocationExpression invocation() { + public OutputNamedExpression firstArgument() { try { - return (BehaviorInvocationExpression)INVOCATION__EINVOCATION_DELEGATE.dynamicInvoke(this, null); + return (OutputNamedExpression)FIRST_ARGUMENT__EINVOCATION_DELEGATE.dynamicInvoke(this, null); } catch (InvocationTargetException ite) { throw new WrappedException(ite); @@ -673,8 +673,8 @@ public class SequenceOperationExpressionImpl extends InvocationExpressionImpl im return isAddTarget((Expression)arguments.get(0)); case AlfPackage.SEQUENCE_OPERATION_EXPRESSION___FIRST_PARAMETER: return firstParameter(); - case AlfPackage.SEQUENCE_OPERATION_EXPRESSION___INVOCATION: - return invocation(); + case AlfPackage.SEQUENCE_OPERATION_EXPRESSION___FIRST_ARGUMENT: + return firstArgument(); case AlfPackage.SEQUENCE_OPERATION_EXPRESSION___SEQUENCE_OPERATION_EXPRESSION_REFERENT_DERIVATION__DIAGNOSTICCHAIN_MAP: return sequenceOperationExpressionReferentDerivation((DiagnosticChain)arguments.get(0), (Map<Object, Object>)arguments.get(1)); case AlfPackage.SEQUENCE_OPERATION_EXPRESSION___SEQUENCE_OPERATION_EXPRESSION_FEATURE_DERIVATION__DIAGNOSTICCHAIN_MAP: diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/alf.ecore b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/alf.ecore index 183a8691add..e2ba9dbbd4c 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/alf.ecore +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf/syntax-gen/org/eclipse/papyrus/uml/alf/impl/alf.ecore @@ -3227,14 +3227,14 @@ eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
- <details key="derivation" value="
 let parameterType = self.tuple().invocation.parameterNamed(self.name).type() in
 parameterType <> null and self.expression.type <> null and
 self.isCollectionClass(parameterType) and 
 not self.isCollectionClass(self.expression.type)"/>
+ <details key="derivation" value="
 let parameter = self.tuple().invocation.parameterNamed(self.name) in
 	parameter <> null and
 	let parameterType = parameter.type() in
	 parameterType <> null and self.expression.type <> null and
	 self.isCollectionClass(parameterType) and 
	 not self.isCollectionClass(self.expression.type)"/>
</eAnnotations>
</eStructuralFeatures>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="isBitStringConversion"
eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" volatile="true"
transient="true" derived="true">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
- <details key="derivation" value="
 let parameterType = self.tuple().invocation.parameterNamed(self.name).type() in
 parameterType <> null and self.expression <> null and
 (self.isBitStringType(parameterType) or 
 self.isBitStringCollectionClass(parameterType)) and 
 not self.isBitStringType(self.expression.type)"/>
+ <details key="derivation" value="
 let parameter = self.tuple().invocation.parameterNamed(self.name) in
 	parameter <> null and
 	let parameterType = parameter.type() in
	 parameterType <> null and self.expression <> null and
	 (self.isBitStringType(parameterType) or 
	 self.isBitStringCollectionClass(parameterType)) and 
	 not self.isBitStringType(self.expression.type)"/>
</eAnnotations>
</eStructuralFeatures>
</eClassifiers>
@@ -3797,9 +3797,9 @@ <details key="body" value="
 let referent = self.referent in
 if referent = null then null
 else
 let parameters = referent.parameters() in
 if parameters->isEmpty() then null
 else parameters->first()
 endif
 endif"/>
</eAnnotations>
</eOperations>
- <eOperations name="invocation" lowerBound="1" eType="#//BehaviorInvocationExpression">
+ <eOperations name="firstArgument" lowerBound="1" eType="#//OutputNamedExpression">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
- <details key="body" value="
				let firstParameter = self.firstParameter() in
				let namedExpression = NamedExpression{
					name = if firstParameter = null then null else firstParameter.name() endif,
					expression = self.primary.expression.reference()
				} in
				let namedTuple = NamedTuple{
					namedExpression = OrderedSet{namedExpression}->
						includingAll(self.tuple.input)->includingAll(self.tuple.output)
				} in
					BehaviorInvocationExpression{
						target = self.operation.copy(),
						referent = self.referent,
						tuple = namedTuple,
						owner = self
					}"/>
+ <details key="body" value="
				let firstParameter = self.firstParameter() in
					OutputNamedExpression{
						name = if firstParameter = null then null else firstParameter.name() endif,
						expression = self.primary.expression,
						index = null,
						owner = self.tuple
					}"/>
</eAnnotations>
</eOperations>
<eOperations name="sequenceOperationExpressionReferentDerivation" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
@@ -5001,9 +5001,9 @@ <details key="body" value="
 if self.expression.oclIsKindOf(PropertyAccessExpression) then
 self.expression.oclAsType(PropertyAccessExpression).featureReference
 else if self.expression.oclIsKindOf(SequenceAccessExpression) then
 let primary = self.expression.oclAsType(SequenceAccessExpression).primary in
 if primary.oclIsKindOf(PropertyAccessExpression) then
 primary.oclAsType(PropertyAccessExpression).featureReference
 else
 null
 endif
 else
 null
 endif endif"/>
</eAnnotations>
</eOperations>
- <eOperations name="primary" eType="#//Expression">
+ <eOperations name="expression" eType="#//Expression">
<eAnnotations source="http://www.eclipse.org/emf/2002/Ecore/OCL/Pivot">
- <details key="body" value="
				PropertyAccessExpression{
					featureReference = self.feature(),
					owner = self.owner()
				}"/>
+ <details key="body" value="self.expression"/>
</eAnnotations>
</eOperations>
<eOperations name="index" eType="#//Expression">
|