Commit 39e12229 authored by Philip Makedonski's avatar Philip Makedonski
Browse files

+ added support for collection items and member references to TO data...

+ added support for collection items and member references to TO data references, adapted constraints, #194
parent 5c6b9856
Loading
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -85,16 +85,11 @@ context ContentReference

context DataReference
  -- 'DataUse' restrictions within 'DataReference'
  inv DataReferenceContents ('Only \'StaticDataUse\' may be used directly or indirectly in \'ParameterBinding\'s of the \'StaticDataUse\' within a \'DataReference\'.' + self.toString()):
    self.content.oclIsTypeOf(StaticDataUse)
          and self.content.argument->forAll(a | a.dataUse.oclIsKindOf(StaticDataUse))
  inv DataReferenceContents ('Only effectively static \'DataUse\'s may be used directly or indirectly in \'ParameterBinding\'s of the \'DataUse\' within a \'DataReference\'.' + self.toString()):
    self.content.isEffectivelyStatic()
          and self.content.argument->forAll(a | a.dataUse.isEffectivelyStatic())
          and self.content.argument->closure(a | 
          a.dataUse.argument)->forAll(a|a.dataUse.oclIsKindOf(StaticDataUse))
  

  -- No 'reduction' within 'DataReference'
  inv DataReferenceReduction ('The \'reduction\' property of \'StaticDataUse\' inherited from \'DataUse\' shall not be used within a \'DataReference\'.' + self.toString()):
    self.content.reduction->isEmpty()
          a.dataUse.argument)->forAll(a|a.dataUse.isEffectivelyStatic())
    


+17 −3
Original line number Diff line number Diff line
@@ -1955,7 +1955,7 @@ fragment DataReferenceFragment returns to::DataReference:
TODataElementUse returns tdl::DataElementUse:
    dataElement=[tdl::NamedElement|TOIdentifier]
    //UnassignedFragmentNamedElement?
	TOParameterBindingFragment?
	(TOParameterBindingFragment | TOCollectionItemFragment | TOMemberReferenceFragment)? 
	//ReductionFragment?
	//TODO: for some reason the fragment breaks serialisation..
	//(reduction+=MemberReference)*
@@ -1964,7 +1964,21 @@ TODataElementUse returns tdl::DataElementUse:
;

fragment TOParameterBindingFragment returns tdl::DataUse:
    'containing' BEGIN (argument+=TOParameterBinding ( ',' argument+=TOParameterBinding)*)? END
    'containing' BEGIN argument+=TOParameterBinding ( ',' argument+=TOParameterBinding)* END
;

fragment TOCollectionItemFragment returns tdl::DataElementUse:
    'containing' BEGIN item+=TODataElementUse (',' item+=TODataElementUse)* END
;

fragment TOMemberReferenceFragment returns tdl::DataUse:
    (reduction+=TOMemberReference)+
;

TOMemberReference returns tdl::MemberReference:
    ('.' member=[tdl::Member|TightName])
    |
    ('.' 'get' LParen collectionIndex=TODataUse RParen)
;

TOParameterBinding returns tdl::ParameterBinding: