Skip to content

Commit eb441e8

Browse files
authored
Merge pull request #668 from Systems-Modeling/ST6RI-857/858/860/861
ST6RI-857/858/860/861 Semantic transformation bugs
2 parents 48738d8 + 137f7df commit eb441e8

9 files changed

Lines changed: 55 additions & 7 deletions

File tree

kerml/src/examples/Simple Tests/Associations.kerml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1-
package Associations {
1+
package Associations {
2+
datatype X;
3+
class Y;
4+
25
assoc A {
3-
end x;
4-
end [1..*] feature y;
6+
end x_cross [1..1] feature x : X;
7+
end y_cross [1..*] feature y : Y;
58
}
69

710
assoc B specializes A {

org.omg.sysml/src/org/omg/sysml/adapter/ConnectionUsageAdapter.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*******************************************************************************
22
* SysML 2 Pilot Implementation
3-
* Copyright (c) 2021 Model Driven Solutions, Inc.
3+
* Copyright (c) 2021, 2025 Model Driven Solutions, Inc.
44
*
55
* This program is free software: you can redistribute it and/or modify
66
* it under the terms of the GNU Lesser General Public License as published by
@@ -36,6 +36,17 @@ public ConnectionUsage getTarget() {
3636
return (ConnectionUsage)super.getTarget();
3737
}
3838

39+
/**
40+
* @satisfies checkPartUsageSubpartSpecialization
41+
*/
42+
@Override
43+
public void addDefaultGeneralType() {
44+
super.addDefaultGeneralType();
45+
if (isSubitem()) {
46+
addDefaultGeneralType("subpart");
47+
}
48+
}
49+
3950
/**
4051
* @satisfies checkConnectionUsageSpecialization
4152
* @satisfies checkAllocationUsageSpecialization

org.omg.sysml/src/org/omg/sysml/adapter/FeatureAdapter.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,14 @@ protected Feature getBoundValueResult() {
228228
*/
229229
@Override
230230
public void addDefaultGeneralType() {
231+
// Note: This must happen before call to super, because default supertype depends on ownedTyping.
232+
addOwnedCrossFeatureSpecialization();
233+
231234
super.addDefaultGeneralType();
232235

233236
addBoundValueSubsetting();
234237
addParticipantSubsetting();
235238
addCrossingSpecialization();
236-
addOwnedCrossFeatureSpecialization();
237239
}
238240

239241

org.omg.sysml/src/org/omg/sysml/adapter/ReferenceUsageAdapter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.omg.sysml.lang.sysml.ReferenceUsage;
3131
import org.omg.sysml.lang.sysml.SuccessionAsUsage;
3232
import org.omg.sysml.lang.sysml.util.SysMLLibraryUtil;
33+
import org.omg.sysml.util.FeatureUtil;
3334
import org.omg.sysml.util.TypeUtil;
3435
import org.omg.sysml.util.UsageUtil;
3536

@@ -56,10 +57,12 @@ public void addDefaultGeneralType() {
5657
ReferenceUsage target = getTarget();
5758
Type type = target.getOwningType();
5859
if (type instanceof TransitionUsage) {
60+
// checkTransitionUsagePayloadSpecialization
5961
if (target == UsageUtil.getPayloadParameterOf((TransitionUsage)type)) {
6062
Feature accepterParameter = UsageUtil.getAccepterPayloadParameterOf((TransitionUsage)type);
6163
if (accepterParameter != null) {
62-
addImplicitGeneralType(SysMLPackage.eINSTANCE.getSubsetting(), accepterParameter);
64+
addImplicitGeneralType(SysMLPackage.eINSTANCE.getSubsetting(),
65+
FeatureUtil.chainFeatures((Feature)accepterParameter.getOwningType(), accepterParameter));
6366
target.setDeclaredName(accepterParameter.getDeclaredName());
6467
return;
6568
}

org.omg.sysml/src/org/omg/sysml/adapter/RenderingUsageAdapter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,17 @@ public RenderingUsageAdapter(RenderingUsage element) {
3535
super(element);
3636
}
3737

38+
/**
39+
* @satisfies checkPartUsageSubpartSpecialization
40+
*/
41+
@Override
42+
public void addDefaultGeneralType() {
43+
super.addDefaultGeneralType();
44+
if (isSubitem()) {
45+
addDefaultGeneralType("subpart");
46+
}
47+
}
48+
3849
@Override
3950
public RenderingUsage getTarget() {
4051
return (RenderingUsage)super.getTarget();

org.omg.sysml/src/org/omg/sysml/adapter/ViewUsageAdapter.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ public ViewUsage getTarget() {
3636
return (ViewUsage)super.getTarget();
3737
}
3838

39+
/**
40+
* @satisfies checkPartUsageSubpartSpecialization
41+
*/
42+
@Override
43+
public void addDefaultGeneralType() {
44+
super.addDefaultGeneralType();
45+
if (isSubitem()) {
46+
addDefaultGeneralType("subpart");
47+
}
48+
}
49+
3950
/**
4051
* @satisfies checkViewUsageSubviewSpecialization
4152
* @satisfies checkViewpointUsageSpecialization

org.omg.sysml/src/org/omg/sysml/util/ImplicitGeneralizationMap.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,8 @@ protected ImplicitGeneralizationMap() {
317317
put(ConnectionUsageImpl.class, "base", "Connections::connections");
318318
//checkConnectionUsageBinarySpecialization
319319
put(ConnectionUsageImpl.class, "binary", "Connections::binaryConnections");
320+
//checkPartUsageSubpartSpecialization (a ConnectionUsage is a PartUsage)
321+
put(ConnectionUsageImpl.class, "subpart", "Items::Item::subparts");
320322

321323
//checkConstraintDefinitionSpecialization
322324
put(ConstraintDefinitionImpl.class, "base", "Constraints::ConstraintCheck");
@@ -474,6 +476,8 @@ protected ImplicitGeneralizationMap() {
474476
put(RenderingUsageImpl.class, "subrendering", "Views::Rendering::subrenderings");
475477
//checkRenderingUsageRedefinition
476478
put(RenderingUsageImpl.class, "viewRendering", "Views::View::viewRendering");
479+
//checkPartUsageSubpartSpecialization (a RenderingUsage is a PartUsage)
480+
put(RenderingUsageImpl.class, "subpart", "Items::Item::subparts");
477481

478482
//checkRequirementDefinitionSpecialization
479483
put(RequirementDefinitionImpl.class, "base", "Requirements::RequirementCheck");
@@ -555,6 +559,8 @@ protected ImplicitGeneralizationMap() {
555559
put(ViewUsageImpl.class, "base", "Views::views");
556560
//checkViewUsageSubviewSpecialization
557561
put(ViewUsageImpl.class, "subview", "Views::View::subviews");
562+
//checkPartUsageSubpartSpecialization (a ViewUsage is a PartUsage)
563+
put(ViewUsageImpl.class, "subpart", "Items::Item::subparts");
558564

559565
//checkViewpointDefinitionSpecialization
560566
put(ViewpointDefinitionImpl.class, "base", "Views::ViewpointCheck");

org.omg.sysml/src/org/omg/sysml/util/TypeUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ private static Feature getResultParameterOf(Type type, Set<Type> visited) {
291291
getTypeAdapter(type).addAdditionalMembers();
292292
Feature resultParameter = getOwnedResultParameterOf(type);
293293
if (resultParameter == null) {
294-
for (Type general: getSupertypesOf(type)) {
294+
for (Type general: getGeneralTypesOf(type)) {
295295
if (general != null && !visited.contains(general)) {
296296
resultParameter = getResultParameterOf(general, visited);
297297
if (resultParameter != null) {

sysml/src/examples/Simple Tests/AllocationTest.sysml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package AllocationTest {
1616
part :>> assembly {
1717
part :>> element;
1818
}
19+
allocate l.component to assembly.element;
1920
}
2021

2122
allocation def A;

0 commit comments

Comments
 (0)