Skip to content

Commit 9977b3b

Browse files
authored
Merge pull request #1478 from IETS3/bugfix/detect_inconsistent_feature_config_states_1476
New checking rules for detecting inconsistencies in variability configurations
2 parents e9e2e32 + 080eff6 commit 9977b3b

File tree

24 files changed

+3041
-1313
lines changed

24 files changed

+3041
-1313
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ The project does _not_ follow Semantic Versioning and the changes are documented
77

88
## September 2025
99

10+
### Added
11+
- Variability: Some changes regarding variant configurations:
12+
- A check has been added for duplicate names of configurations in the same container.
13+
- Configurations might become inconsistent due to errors during manual conflict merges. A couple of model checks have been added to detect this. Additionally, there are quickfixes to fix such errors.
14+
- The internal storage of configurations has changed, this requires a language migration. Note that after the execution of the migration, extended configurations must be adapted via intention to their changed base configuration.
15+
1016
### Fixed
1117
- The renderReadable/getPresentation implementations were improved and are now equivalent in all concepts.
1218
- Variability: For feature attributes, the inspector in the configuration editor shows the current value of the attribute and what caused this value (manual input by user, default, forced by tool, etc). This assignment cause is read-only now. An intention is added to manually set it to 'manual' state.

code/languages/org.iets3.opensource/languages/org.iets3.components.functional/models/typesystem.mps

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3251,7 +3251,7 @@
32513251
<node concept="3clFbS" id="x8tpS_NsQ_" role="3clFbx">
32523252
<node concept="2MkqsV" id="x8tpS_NwyQ" role="3cqZAp">
32533253
<node concept="Xl_RD" id="x8tpS_Nwzb" role="2MkJ7o">
3254-
<property role="Xl_RC" value="must not be 0" />
3254+
<property role="Xl_RC" value="Upper bound must not be 0" />
32553255
</node>
32563256
<node concept="2ODE4t" id="x8tpS_Nw$_" role="1urrC5">
32573257
<ref role="2ODJFN" to="874t:x8tpS_w3Qp" resolve="upperBound" />
@@ -3284,7 +3284,7 @@
32843284
<node concept="3clFbS" id="x8tpS_Nx86" role="3clFbx">
32853285
<node concept="2MkqsV" id="x8tpS_NxyL" role="3cqZAp">
32863286
<node concept="Xl_RD" id="x8tpS_NxyM" role="2MkJ7o">
3287-
<property role="Xl_RC" value="lower bound must be smaller then upper bound" />
3287+
<property role="Xl_RC" value="Lower bound must be smaller then upper bound" />
32883288
</node>
32893289
<node concept="1YBJjd" id="x8tpS_NxyN" role="1urrMF">
32903290
<ref role="1YBMHb" node="x8tpS_NosR" resolve="cardinality" />

code/languages/org.iets3.opensource/languages/org.iets3.variability.configuration.base/models/org.iets3.variability.configuration.base.behavior.mps

Lines changed: 48 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -2086,7 +2086,7 @@
20862086
<node concept="10P_77" id="72bTBsCt0jf" role="3clF45" />
20872087
<node concept="3clFbS" id="72bTBsCt0jg" role="3clF47">
20882088
<node concept="3clFbF" id="72bTBsCt0jh" role="3cqZAp">
2089-
<node concept="3clFbC" id="72bTBsCt0ji" role="3clFbG">
2089+
<node concept="17R0WA" id="7WsNHxjv$eS" role="3clFbG">
20902090
<node concept="2OqwBi" id="72bTBsCt0jj" role="3uHU7B">
20912091
<node concept="13iPFW" id="72bTBsCt0jk" role="2Oq$k0" />
20922092
<node concept="3TrcHB" id="72bTBsCt0jl" role="2OqNvi">
@@ -5451,37 +5451,6 @@
54515451
</node>
54525452
</node>
54535453
</node>
5454-
<node concept="3clFbJ" id="5SSZu0fLIRJ" role="3cqZAp">
5455-
<node concept="3clFbS" id="5SSZu0fLIRL" role="3clFbx">
5456-
<node concept="3clFbF" id="5SSZu0fLL26" role="3cqZAp">
5457-
<node concept="37vLTI" id="5SSZu0fLLAm" role="3clFbG">
5458-
<node concept="2OqwBi" id="5SSZu0fLLc_" role="37vLTJ">
5459-
<node concept="13iPFW" id="5SSZu0fLL24" role="2Oq$k0" />
5460-
<node concept="3TrcHB" id="5SSZu0fLLlL" role="2OqNvi">
5461-
<ref role="3TsBF5" to="4ndm:59FNqAPCJNr" resolve="selectionState" />
5462-
</node>
5463-
</node>
5464-
<node concept="2OqwBi" id="59FNqAPCKiu" role="37vLTx">
5465-
<node concept="1XH99k" id="59FNqAPCKiv" role="2Oq$k0">
5466-
<ref role="1XH99l" to="s6b7:59FNqAPCJGh" resolve="FeatureSelectionState" />
5467-
</node>
5468-
<node concept="2ViDtV" id="59FNqAPCKiw" role="2OqNvi">
5469-
<ref role="2ViDtZ" to="s6b7:2wLdcSYDcHT" resolve="inheritedTrue" />
5470-
</node>
5471-
</node>
5472-
</node>
5473-
</node>
5474-
</node>
5475-
<node concept="2OqwBi" id="5SSZu0fLKuh" role="3clFbw">
5476-
<node concept="2OqwBi" id="5SSZu0fLJpT" role="2Oq$k0">
5477-
<node concept="13iPFW" id="5SSZu0fLIYw" role="2Oq$k0" />
5478-
<node concept="3TrEf2" id="5SSZu0fLKde" role="2OqNvi">
5479-
<ref role="3Tt5mk" to="4ndm:4onczE6iX1P" resolve="extendedFMC" />
5480-
</node>
5481-
</node>
5482-
<node concept="3x8VRR" id="5SSZu0fLKRn" role="2OqNvi" />
5483-
</node>
5484-
</node>
54855454
</node>
54865455
<node concept="37vLTG" id="6PjKOfa9LfY" role="3clF46">
54875456
<property role="TrG5h" value="traverseExtensionHierarchyLeafToRoot" />
@@ -6246,8 +6215,14 @@
62466215
<node concept="3clFbJ" id="62RvBIbuhtp" role="3cqZAp">
62476216
<node concept="3clFbS" id="62RvBIbuhtq" role="3clFbx">
62486217
<node concept="3cpWs6" id="4wse97wCg2x" role="3cqZAp">
6249-
<node concept="BsUDl" id="4wse97wCg2w" role="3cqZAk">
6250-
<ref role="37wK5l" node="4wse97wCg2r" resolve="skipSolverRunInfo" />
6218+
<node concept="BsUDl" id="7WsNHxjpm$n" role="3cqZAk">
6219+
<ref role="37wK5l" node="7WsNHxjlUA1" resolve="skipSolverRunInfo" />
6220+
<node concept="Xl_RD" id="7WsNHxjpm$o" role="37wK5m">
6221+
<property role="Xl_RC" value="Async solver execution is blocked by complete-flag" />
6222+
</node>
6223+
<node concept="Xl_RD" id="7WsNHxjpm$p" role="37wK5m">
6224+
<property role="Xl_RC" value="Check already running" />
6225+
</node>
62516226
</node>
62526227
</node>
62536228
</node>
@@ -7279,55 +7254,68 @@
72797254
</node>
72807255
</node>
72817256
</node>
7282-
<node concept="13i0hz" id="4wse97wCg2r" role="13h7CS">
7257+
<node concept="13i0hz" id="7WsNHxjlUA1" role="13h7CS">
72837258
<property role="TrG5h" value="skipSolverRunInfo" />
7284-
<node concept="3Tm6S6" id="4wse97wCg2s" role="1B3o_S" />
7285-
<node concept="3uibUv" id="4wse97wCg2t" role="3clF45">
7286-
<ref role="3uigEE" to="5zyv:~CompletableFuture" resolve="CompletableFuture" />
7287-
<node concept="3uibUv" id="4wse97wCg2u" role="11_B2D">
7288-
<ref role="3uigEE" to="33ny:~List" resolve="List" />
7289-
<node concept="3uibUv" id="4wse97wCg2v" role="11_B2D">
7290-
<ref role="3uigEE" to="gdgh:5zG5$Lyex1G" resolve="IResult" />
7291-
</node>
7292-
</node>
7293-
</node>
7294-
<node concept="3clFbS" id="4wse97wCg29" role="3clF47">
7295-
<node concept="RRSsy" id="4wse97wCg2a" role="3cqZAp">
7296-
<node concept="Xl_RD" id="4wse97wCg2b" role="RRSoy">
7297-
<property role="Xl_RC" value="Async solver execution is blocked by complete-flag" />
7259+
<node concept="3Tm6S6" id="7WsNHxjm6W7" role="1B3o_S" />
7260+
<node concept="3clFbS" id="7WsNHxjlUA4" role="3clF47">
7261+
<node concept="RRSsy" id="7WsNHxjm7ki" role="3cqZAp">
7262+
<node concept="37vLTw" id="7WsNHxjpaVO" role="RRSoy">
7263+
<ref role="3cqZAo" node="7WsNHxjm7iM" resolve="msg1" />
72987264
</node>
72997265
</node>
7300-
<node concept="3cpWs6" id="4wse97wCg2c" role="3cqZAp">
7301-
<node concept="2YIFZM" id="4wse97wCg2d" role="3cqZAk">
7266+
<node concept="3cpWs6" id="7WsNHxjm7kk" role="3cqZAp">
7267+
<node concept="2YIFZM" id="7WsNHxjm7kl" role="3cqZAk">
73027268
<ref role="37wK5l" to="5zyv:~CompletableFuture.completedFuture(java.lang.Object)" resolve="completedFuture" />
73037269
<ref role="1Pybhc" to="5zyv:~CompletableFuture" resolve="CompletableFuture" />
7304-
<node concept="2YIFZM" id="4wse97wCg2e" role="37wK5m">
7270+
<node concept="2YIFZM" id="7WsNHxjm7km" role="37wK5m">
73057271
<ref role="37wK5l" to="33ny:~Collections.singletonList(java.lang.Object)" resolve="singletonList" />
73067272
<ref role="1Pybhc" to="33ny:~Collections" resolve="Collections" />
7307-
<node concept="2YIFZM" id="5EF7XxJbmP4" role="37wK5m">
7273+
<node concept="2YIFZM" id="7WsNHxjm7kn" role="37wK5m">
73087274
<ref role="37wK5l" to="gdgh:2esy_3orpPr" resolve="make" />
73097275
<ref role="1Pybhc" to="gdgh:5zG5$Lyex1G" resolve="IResult" />
7310-
<node concept="Rm8GO" id="5EF7XxJbmP5" role="37wK5m">
7276+
<node concept="Rm8GO" id="7WsNHxjm7ko" role="37wK5m">
73117277
<ref role="Rm8GQ" to="gdgh:57dmM_UsCk4" resolve="Info" />
73127278
<ref role="1Px2BO" to="gdgh:57dmM_Us_jZ" resolve="IResult.MessageType" />
73137279
</node>
7314-
<node concept="Xl_RD" id="5EF7XxJbmP6" role="37wK5m">
7315-
<property role="Xl_RC" value="Skipping: Check already running" />
7280+
<node concept="3cpWs3" id="7WsNHxjpgk3" role="37wK5m">
7281+
<node concept="37vLTw" id="7WsNHxjphll" role="3uHU7w">
7282+
<ref role="3cqZAo" node="7WsNHxjm7jo" resolve="msg2" />
7283+
</node>
7284+
<node concept="Xl_RD" id="7WsNHxjpcxY" role="3uHU7B">
7285+
<property role="Xl_RC" value="Skipping: " />
7286+
</node>
73167287
</node>
7317-
<node concept="2YIFZM" id="5EF7XxJbmP7" role="37wK5m">
7288+
<node concept="2YIFZM" id="7WsNHxjm7kq" role="37wK5m">
73187289
<ref role="37wK5l" to="33ny:~Collections.emptyList()" resolve="emptyList" />
73197290
<ref role="1Pybhc" to="33ny:~Collections" resolve="Collections" />
7320-
<node concept="3Tqbb2" id="5EF7XxJbmP8" role="3PaCim" />
7291+
<node concept="3Tqbb2" id="7WsNHxjm7kr" role="3PaCim" />
73217292
</node>
7322-
<node concept="10Nm6u" id="5EF7XxJbmP9" role="37wK5m" />
7293+
<node concept="10Nm6u" id="7WsNHxjm7ks" role="37wK5m" />
73237294
</node>
7324-
<node concept="3uibUv" id="4wse97wCg2k" role="3PaCim">
7295+
<node concept="3uibUv" id="7WsNHxjm7kt" role="3PaCim">
73257296
<ref role="3uigEE" to="gdgh:5zG5$Lyex1G" resolve="IResult" />
73267297
</node>
73277298
</node>
73287299
</node>
73297300
</node>
73307301
</node>
7302+
<node concept="3uibUv" id="7WsNHxjm6Wp" role="3clF45">
7303+
<ref role="3uigEE" to="5zyv:~CompletableFuture" resolve="CompletableFuture" />
7304+
<node concept="3uibUv" id="7WsNHxjm6Wq" role="11_B2D">
7305+
<ref role="3uigEE" to="33ny:~List" resolve="List" />
7306+
<node concept="3uibUv" id="7WsNHxjm6Wr" role="11_B2D">
7307+
<ref role="3uigEE" to="gdgh:5zG5$Lyex1G" resolve="IResult" />
7308+
</node>
7309+
</node>
7310+
</node>
7311+
<node concept="37vLTG" id="7WsNHxjm7iM" role="3clF46">
7312+
<property role="TrG5h" value="msg1" />
7313+
<node concept="17QB3L" id="7WsNHxjm7iL" role="1tU5fm" />
7314+
</node>
7315+
<node concept="37vLTG" id="7WsNHxjm7jo" role="3clF46">
7316+
<property role="TrG5h" value="msg2" />
7317+
<node concept="17QB3L" id="7WsNHxjm7jG" role="1tU5fm" />
7318+
</node>
73317319
</node>
73327320
<node concept="13i0hz" id="1VDhrxM$80W" role="13h7CS">
73337321
<property role="TrG5h" value="usedConfigsExtended" />

0 commit comments

Comments
 (0)