Skip to content

Commit 55712ce

Browse files
authored
Merge pull request #679 from Systems-Modeling/ST6RI-872
ST6RI-872 Library models have inherited member name collisions (KERML11-76, SYSML21-322)
2 parents c87e6a3 + 2002618 commit 55712ce

82 files changed

Lines changed: 10851 additions & 5578 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

kerml/src/examples/KerML Spec Annex A Examples/A-3-8-ChangingFeatureValues.kerml

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,21 @@ package ChangingFeatureValuesExecution {
110110
#atom
111111
behavior MyPaint specializes Paint {
112112
feature redefines objectToPaint : MyProduct;
113-
step redefines painting : PaintingMyProductFeatureWrite;
114-
step redefines painted : PaintedMyProductFeatureWrite;
113+
step redefines painting : PaintingMyProductFeatureWrite {
114+
in onOccurrence;
115+
}
116+
step redefines painted : PaintedMyProductFeatureWrite {
117+
in onOccurrence;
118+
}
115119
succession redefines p_before_p : MyPaintingFW_Before_PaintFW_Link first painting then painted;
116120
}
117121

118122
#atom
119123
behavior MyDry specializes Dry {
120124
feature redefines objectToDry : MyProduct;
121-
step redefines dried : MyProductFeatureWrite;
125+
step redefines dried : MyProductFeatureWrite {
126+
in onOccurrence;
127+
}
122128
}
123129
#atom
124130
assoc MyPaint_Before_Dry_Link specializes HappensBefore {
@@ -128,7 +134,9 @@ package ChangingFeatureValuesExecution {
128134
#atom
129135
behavior MyShip specializes Ship {
130136
feature redefines objectToShip : MyProduct;
131-
step redefines shipped : MyProductFeatureWrite;
137+
step redefines shipped : MyProductFeatureWrite {
138+
in onOccurrence;
139+
}
132140
}
133141
#atom
134142
assoc MyDry_Before_Ship_Link specializes HappensBefore {
@@ -144,7 +152,9 @@ package ChangingFeatureValuesExecution {
144152
feature obPiS chains objectToFinish.beforePaint.isShipped = false;
145153

146154

147-
step redefines paint : MyPaint;
155+
step redefines paint : MyPaint {
156+
feature redefines paint::objectToPaint, MyPaint::objectToPaint;
157+
}
148158
feature subsets objectToFinish.beforePaint.immediateSuccessors,
149159
objectToFinish.whilePainting.startShot.timeCoincidentOccurrences
150160
chains paint.painting.endShot;
@@ -161,7 +171,9 @@ package ChangingFeatureValuesExecution {
161171
feature oaPiS chains objectToFinish.afterPaint.isShipped = false;
162172

163173

164-
step redefines dry : MyDry;
174+
step redefines dry : MyDry {
175+
feature redefines dry::objectToDry, MyDry::objectToDry;
176+
}
165177
succession redefines p_before_d : MyPaint_Before_Dry_Link [1] first paint then dry;
166178
feature subsets objectToFinish.afterPaint.immediateSuccessors,
167179
objectToFinish.afterDry.startShot.timeCoincidentOccurrences
@@ -171,7 +183,9 @@ package ChangingFeatureValuesExecution {
171183
feature oaDiS chains objectToFinish.afterDry.isShipped = false;
172184

173185

174-
step redefines ship : MyShip;
186+
step redefines ship : MyShip {
187+
feature redefines ship::objectToShip, MyShip::objectToShip;
188+
}
175189
succession redefines d_before_s : MyDry_Before_Ship_Link [1] first dry then ship;
176190
feature subsets objectToFinish.afterDry.immediateSuccessors,
177191
objectToFinish.afterShip.startShot.timeCoincidentOccurrences

kerml/src/examples/Variable Feature Examples/Enhancements/ExtendedOccurrences.kerml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,8 @@ package ExtendedOccurrences {
4747
connector : Occurrences::HappensDuring from [1] that to [1] self;
4848
}
4949
}
50+
struct ExtendedObject :> ExtendedOccurrence {
51+
feature self : ExtendedObject :>> Objects::Object::self, ExtendedOccurrence::self;
52+
}
53+
5054
}

kerml/src/examples/Variable Feature Examples/Enhancements/TimeVaryingFeaturesEnhanced.kerml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package TimeVaryingFeaturesEnhanced {
22
private import ExtendedOccurrences::*;
3-
3+
44
class CC1 :> ExtendedOccurrence {
55
var feature x;
66
//member feature x featured by CC1_snapshots {
@@ -116,7 +116,7 @@ package TimeVaryingFeaturesEnhanced {
116116
//}
117117
}
118118

119-
struct Car1 :> ExtendedOccurrence { // May or may not be a life
119+
struct Car1 :> ExtendedObject { // May or may not be a life
120120
var feature driver : Person [0..1];
121121
//member feature driver : Person [0..1] featured by Car_snapshots {
122122
// member feature Car_snapshots :>> ExtendedOccurrences::ExtendedOccurrence::snapshots featured by Car1;

org.omg.kerml.xpect.tests/library/FeatureReferencingPerformances.kerml

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@ standard library package FeatureReferencingPerformances {
133133
*/
134134

135135
in feature onOccurrence : Evaluation redefines onOccurrence {
136-
protected monitoredOccurrence : Evaluation [1] redefines monitoredOccurrence {
137-
out result : Anything[*] redefines result, monitoredFeature;
136+
protected expr monitoredOccurrence : Evaluation [1] redefines monitoredOccurrence {
137+
return result : Anything[*] redefines result, monitoredFeature;
138138
}
139139
}
140140
}
@@ -147,7 +147,9 @@ standard library package FeatureReferencingPerformances {
147147
*/
148148

149149
in bool redefines onOccurrence {
150-
protected bool redefines monitoredOccurrence[1];
150+
protected bool redefines monitoredOccurrence[1] {
151+
return result : Boolean [1];
152+
}
151153
}
152154
out redefines afterValues : Boolean [1];
153155
out redefines beforeValues : Boolean [1];
@@ -167,10 +169,16 @@ standard library package FeatureReferencingPerformances {
167169
feature isToTrue : Boolean [1] default true;
168170
out afterValues: Boolean[1] redefines values = isToTrue;
169171
private feature monitor1 : BooleanEvaluationResultMonitorPerformance [1] {
170-
feature redefines endWhen : HappensJustBefore;
172+
feature redefines endWhen : HappensJustBefore {
173+
end feature earlierOccurrence;
174+
end feature laterOccurrence;
175+
}
171176
}
172177
private feature monitor2 : BooleanEvaluationResultMonitorPerformance [1] {
173-
feature redefines endWhen : HappensJustBefore;
178+
feature redefines endWhen : HappensJustBefore {
179+
end feature earlierOccurrence;
180+
end feature laterOccurrence;
181+
}
174182
}
175183

176184
private connector : HappensJustBefore from [1] monitor1 to [0..1] monitor2;

org.omg.kerml.xpect.tests/library/Objects.kerml

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -165,27 +165,46 @@ standard library package Objects {
165165
* inner space dimension of structured space object is the highest of their cells.
166166
*/
167167

168-
abstract portion feature structuredSpaceObjectCells : StructuredSpaceObject[1..*] subsets Occurrence::spaceSlices
169-
{ feature cellOrientation : Integer [0..1];
168+
abstract portion feature structuredSpaceObjectCells : StructuredSpaceObject[1..*] subsets Occurrence::spaceSlices {
169+
feature cellOrientation : Integer [0..1];
170170
inv { notEmpty(cellOrientation) implies (cellOrientation >= -1 & cellOrientation <= 1) }
171-
}
171+
}
172+
173+
comment about StructuredSurface, StructuredCurve, StructuredPoint
174+
/*
175+
* The structures StructuredSurface, StructuredCurve and StructuredPoint provide common, necessary redefinitions of
176+
* innerSpaceDimension. They also provide single types for the StructuredSpaceObject features faces, edges and
177+
* vertices, which avoids problems when these features are related by connectors with ends that have owned
178+
* cross features.
179+
*/
180+
struct StructuredSurface specializes StructuredSpaceObject, Surface {
181+
feature redefines StructuredSpaceObject::innerSpaceDimension, Surface::innerSpaceDimension;
182+
}
183+
struct StructuredCurve specializes StructuredSpaceObject, Curve {
184+
feature redefines StructuredSpaceObject::innerSpaceDimension, Curve::innerSpaceDimension;
185+
}
186+
struct StructuredPoint specializes StructuredSpaceObject, Point {
187+
feature redefines StructuredSpaceObject::innerSpaceDimension, Point::innerSpaceDimension;
188+
}
172189

173-
portion feature faces : Surface[0..*] ordered subsets structuredSpaceObjectCells {
174-
feature redefines edges subsets StructuredSpaceObject::edges;
175-
feature redefines vertices subsets StructuredSpaceObject::vertices;
190+
portion feature faces : StructuredSurface[0..*] ordered subsets structuredSpaceObjectCells {
191+
feature redefines that : StructuredSpaceObject;
192+
feature redefines edges subsets that.edges;
193+
feature redefines vertices subsets that.vertices;
176194
derived feature redefines spaceBoundary;
177195
inv { isEmpty(spaceBoundary) == isEmpty(union(edges, vertices)) }
178196
inv { notEmpty(spaceBoundary) implies contains(spaceBoundary.unionsOf, union(edges, vertices)) }
179197
}
180198

181-
portion feature edges : Curve[0..*] ordered subsets structuredSpaceObjectCells {
182-
feature redefines vertices subsets StructuredSpaceObject::vertices;
199+
portion feature edges : StructuredCurve[0..*] ordered subsets structuredSpaceObjectCells {
200+
feature redefines that : StructuredSpaceObject;
201+
feature redefines vertices subsets that.vertices;
183202
derived feature redefines spaceBoundary;
184203
inv { isEmpty(spaceBoundary) == isEmpty(vertices) }
185204
inv { notEmpty(spaceBoundary) implies contains(spaceBoundary.unionsOf, vertices) }
186205
}
187206

188-
portion feature vertices : Point[0..*] ordered subsets structuredSpaceObjectCells;
207+
portion feature vertices : StructuredPoint[0..*] ordered subsets structuredSpaceObjectCells;
189208

190209
derived feature redefines innerSpaceDimension =
191210
if notEmpty(faces) ? 2 else if notEmpty(edges) ? 1 else 0;

org.omg.kerml.xpect.tests/library/Observation.kerml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ standard library package Observation {
9292
end feature source {
9393
feature redefines sourceOutput = changeSignal;
9494
}
95+
end feature target;
9596
}
9697
}
9798

org.omg.kerml.xpect.tests/library/Occurrences.kerml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -537,16 +537,16 @@ standard library package Occurrences {
537537
* the inner ones.
538538
*/
539539

540-
feature redefines isClosed = true;
540+
inv { isClosed == true }
541541

542542
feature spaceBounder: Occurrence [1] subsets self;
543543

544-
outer: Occurrence [0..1] subsets spaceSlices {
544+
feature outer: Occurrence [0..1] subsets spaceSlices {
545545
feature redefines isClosed = true;
546546
feature redefines innerSpaceDimension = spaceBounder.innerSpaceDimension;
547547
}
548548

549-
inner: Occurrence [0..*] subsets spaceSlices {
549+
feature inner: Occurrence [0..*] subsets spaceSlices {
550550
feature redefines isClosed = true;
551551
feature redefines innerSpaceDimension = spaceBounder.innerSpaceDimension;
552552
}

org.omg.kerml.xpect.tests/library/Transfers.kerml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ standard library package Transfers {
167167
private succession self then target;
168168
}
169169

170-
interaction FlowTransferBefore specializes FlowTransfer, TransferBefore intersects FlowTransfer, TransferBefore {
170+
interaction FlowTransferBefore specializes TransferBefore, FlowTransfer intersects FlowTransfer, TransferBefore {
171171
doc
172172
/*
173173
* FlowTransferBefore is a FlowTransfer that is also a TransferBefore.

org.omg.kerml.xpect.tests/library/VectorFunctions.kerml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,9 @@ standard library package VectorFunctions {
179179
}
180180
function CartesianThreeVectorOf specializes CartesianVectorOf {
181181
in components: Real[3] ordered nonunique;
182-
return : CartesianThreeVectorValue[1];
182+
return : CartesianThreeVectorValue[1] {
183+
feature :>> CartesianVectorOf::result::dimension, CartesianThreeVectorValue::dimension;
184+
}
183185
}
184186

185187
feature cartesianZeroVector: CartesianVectorValue[3] =

org.omg.kerml.xpect.tests/src/org/omg/kerml/xpect/tests/testsuite/ShadowingTests_ImportAndInnerClassesNamesAreTheSameBadCase3_Rdef.kerml.xt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ package test{
2525
public import OuterPackage::*;
2626
}
2727
feature inner1 subsets inner {
28-
//XPECT warnings --> "Duplicate of inherited member name B from OuterPackage" at "B"
28+
//XPECT warnings --> "Duplicate of inherited member name 'B' from OuterPackage" at "B"
2929
feature B redefines A {
3030
//XPECT linkedName at a1 --> OuterPackage.A.a1
3131
//* XPECT scope at a1 ---

0 commit comments

Comments
 (0)