From f2a5093c703790389fa0e72bf7ab73e446440766 Mon Sep 17 00:00:00 2001
From: Ed Willink
Date: Tue, 20 Sep 2016 15:44:53 +0100
Subject: [500369] Prepare for Mapping install
---
.../model/QVTimperative.ecore | 131 ++++++++++++++++-----
.../model/QVTimperative.genmodel | 37 ++++--
.../model/QVTimperative.ocl | 11 +-
.../model/QVTimperativeCS.ecore | 62 +++++++---
.../model/QVTimperativeCS.genmodel | 40 +++++--
.../qvtd/xtext/qvtimperative/QVTimperative.xtext | 30 +++--
6 files changed, 236 insertions(+), 75 deletions(-)
(limited to 'plugins')
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore
index 7959d4ab3..374b32b52 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ecore
@@ -28,6 +28,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -57,6 +74,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -71,6 +104,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -89,7 +138,7 @@
+ eType="#//MappingParameterBinding" containment="true" eOpposite="#//MappingParameterBinding/mappingCall">
@@ -100,33 +149,22 @@
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
@@ -147,6 +185,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -167,13 +223,6 @@
-
-
-
-
-
-
@@ -193,6 +242,30 @@
eType="ecore:EClass ../../org.eclipse.ocl.pivot/model/Pivot.ecore#//OCLExpression"
containment="true"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel
index dc4f92475..563c52175 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.genmodel
@@ -24,22 +24,36 @@
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
@@ -50,19 +64,20 @@
+
+
-
-
-
-
-
+
+
+
+
@@ -71,9 +86,6 @@
-
-
-
@@ -81,6 +93,13 @@
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl
index a614fc482..1035f50b8 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/model/QVTimperative.ocl
@@ -31,7 +31,7 @@ def: referringNames : Set(String) = binding.boundVariable.name->asSet()
inv MatchingCallBindings('Mismatched bindings ' + referredMapping.name + joinNames(referredNames) + ' <= ' + joinNames(referringNames)): referredNames = referringNames
inv UniqueCallBindings: binding->isUnique(boundVariable)
-context MappingCallBinding
+context GuardParameterBinding
inv CompatibleBinding: value.type.conformsTo(boundVariable.type) or boundVariable.type.conformsTo(value.type)
endpackage
@@ -65,8 +65,13 @@ inv NoRealizedVariableNavigations: ownedExpression->closure(oclContents())->sele
--inv IsEnforced: let area = oclContainer().oclAsType(GuardPattern).area, mapping = area.mapping in
-- if mapping.isToMiddle then area = mapping else area.oclAsType(CoreDomain).isEnforceable endif
---context PredicateVariable
---inv NoVariableAssignmentsInSourceDomain: not bottomPattern.area.isSource
+context GuardParameterBinding
+inv CheckedTypeIsNotConformant: isCheck implies not value.type.conformsTo(boundVariable.type)
+inv UncheckedTypeIsConformant: not isCheck implies value.type.conformsTo(boundVariable.type)
+
+context SimpleParameterBinding
+inv CheckedTypeIsNotConformant: isCheck implies not value.type.conformsTo(boundVariable.type)
+inv UncheckedTypeIsConformant: not isCheck implies value.type.conformsTo(boundVariable.type)
--inv CompatibleType: ownedInit.type.conformsTo(type)
endpackage
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore b/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore
index 010854d25..fd1f8c120 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/model/QVTimperativeCS.ecore
@@ -8,7 +8,16 @@
+
+
+
+
+
+
+
-
@@ -27,10 +36,24 @@
+
+
+
+
+
+
+
+
+
+
@@ -39,20 +62,15 @@
-
-
-
-
-
+
+
+ upperBound="-1" eType="#//MappingParameterBindingCS" containment="true" eOpposite="#//MappingParameterBindingCS/owningMappingCall"/>
+
+
+
@@ -88,10 +111,6 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
+
+
@@ -57,6 +71,9 @@
+
+
+
@@ -65,9 +82,6 @@
-
-
-
@@ -82,6 +96,14 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext
index 85627360b..63de34ccc 100644
--- a/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext
+++ b/plugins/org.eclipse.qvtd.xtext.qvtimperative/src/org/eclipse/qvtd/xtext/qvtimperative/QVTimperative.xtext
@@ -27,7 +27,11 @@ TopLevelCS:
AddStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
'add' targetVariable=[qvtimperative::ConnectionVariable|UnrestrictedName] '+=' ownedExpression=ExpCS ';';
+AppendParameterBindingCS: referredVariable=[qvtimperative::AppendParameter|UnrestrictedName] 'appendsTo' value=[qvtimperative::ConnectionVariable|UnrestrictedName] ';';
+
AppendParameterCS: 'append' name=UnrestrictedName ':' ownedType=TypeExpCS ';';
+
+BufferStatementCS: 'buffer' name=UnrestrictedName (':' ownedType=TypeExpCS)? (':=' ownedExpression=ExpCS)? ';';
CommitStatementCS returns StatementCS: NewStatementCS | SetStatementCS;
@@ -36,19 +40,23 @@ CheckStatementCS: 'check' ownedCondition=ExpCS ';';
ControlStatementCS returns MappingStatementCS: AddStatementCS | MappingCallCS | MappingLoopCS;
DeclareStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
- isChecked?='check'? 'var' name=UnrestrictedName (':' ownedType=TypeExpCS)? ':=' ownedExpression=ExpCS ';';
+ isCheck?='check'? 'var' name=UnrestrictedName (':' ownedType=TypeExpCS)? ':=' ownedExpression=ExpCS ';';
DirectionCS: {DirectionCS} (isChecked?='check'|isEnforced?='enforce')? name=UnrestrictedName?
'imports' imports+=[pivot::Package|UnrestrictedName] (',' imports+=[pivot::Package|UnrestrictedName])*
;
-GuardParameterCS: 'in' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS ';';
+GuardParameterBindingCS: isCheck?='check'? referredVariable=[qvtimperative::GuardParameter|UnrestrictedName] 'consumes' value=[qvtimperative::ConnectionVariable|UnrestrictedName] ';';
+
+GuardParameterCS: 'guard' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS ';';
-GuardStatementCS returns StatementCS: OutVariableCS | DeclareStatementCS | DeclareStatementCS | CheckStatementCS;
+GuardStatementCS returns StatementCS: BufferStatementCS | DeclareStatementCS | DeclareStatementCS | CheckStatementCS;
ImportCS returns base::ImportCS:
'import' (name=Identifier ':')? ownedPathName=URIPathNameCS (isAll?='::' '*')? ';';
+LoopParameterBindingCS: isCheck?='check'? referredVariable=[qvtimperative::GuardParameter|UnrestrictedName] 'iterates' value=[qvtimperative::LoopVariable|UnrestrictedName] ';';
+
MappingCS: {MappingCS} 'map' name=UnrestrictedName ('in' ownedInPathName=PathNameCS)?
'{'
ownedParameters+=MappingParameterCS*
@@ -57,24 +65,22 @@ MappingCS: {MappingCS} 'map' name=UnrestrictedName ('in' ownedInPathName=PathNam
ownedStatements+=ControlStatementCS*
'}';
-MappingCallCS: {MappingCallCS} isInfinite?='infinite'? 'call' ownedPathName=PathNameCS
- '{' ownedBindings+=MappingCallBindingCS* '}';
-
-MappingCallBindingCS: referredVariable=[pivot::VariableDeclaration|UnrestrictedName] ':=' ownedValue=ExpCS ';';
+MappingCallCS: {MappingCallCS} isInfinite?='infinite'? ('call'|isInstall?='install'|isInvoke?='invoke') ownedPathName=PathNameCS
+ '{' ownedBindings+=MappingParameterBindingCS* '}';
MappingLoopCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
'for' ownedIterator=MappingIteratorCS 'in' ownedInExpression=ExpCS '{' ownedMappingStatements+=ControlStatementCS+ '}';
MappingIteratorCS returns essentialocl::VariableCS: name=UnrestrictedName (':' ownedType=TypeExpCS)?;
-MappingParameterCS: GuardParameterCS | AppendParameterCS;
+MappingParameterBindingCS: AppendParameterBindingCS | GuardParameterBindingCS | LoopParameterBindingCS | SimpleParameterBindingCS;
+
+MappingParameterCS: AppendParameterCS | GuardParameterCS | SimpleParameterCS;
NewStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
'new' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS (':=' ownedExpression=ExpCS)? ';'
;
-OutVariableCS: 'out' name=UnrestrictedName ':' ownedType=TypeExpCS (':=' ownedExpression=ExpCS)? ';';
-
ParamDeclarationCS: name=UnrestrictedName ':' ownedType=TypeExpCS;
QualifiedPackageCS returns qvtbasecs::QualifiedPackageCS:
@@ -95,6 +101,10 @@ ScopeNameCS returns base::PathNameCS:
SetStatementCS: ('observe' observedProperties+=PathNameCS (',' observedProperties+=PathNameCS)*)?
(isNotify?='notify')? 'set' referredVariable=[pivot::VariableDeclaration|UnrestrictedName] '.' referredProperty=[pivot::Property|UnrestrictedName] ':=' ownedExpression=ExpCS ';';
+
+SimpleParameterBindingCS: isCheck?='check'? referredVariable=[qvtimperative::SimpleParameter|UnrestrictedName] 'uses' ownedValue=ExpCS ';';
+
+SimpleParameterCS: 'in' ':' referredTypedModel=[qvtimperative::ImperativeTypedModel|UnrestrictedName] name=UnrestrictedName ':' ownedType=TypeExpCS ';';
TransformationCS:
'transformation' ownedPathName=ScopeNameCS? name=UnreservedName '{' (ownedDirections+=DirectionCS ';')* '}';
--
cgit v1.2.3