|
1 | 1 | /***************************************************************************** |
2 | 2 | * SysML 2 Pilot Implementation |
3 | 3 | * Copyright (c) 2020 California Institute of Technology/Jet Propulsion Laboratory |
4 | | - * Copyright (c) 2020-2023 Model Driven Solutions, Inc. |
| 4 | + * Copyright (c) 2020-2025 Model Driven Solutions, Inc. |
5 | 5 | * |
6 | 6 | * This program is free software: you can redistribute it and/or modify |
7 | 7 | * it under the terms of the GNU Lesser General Public License as published by |
@@ -143,11 +143,15 @@ import org.omg.sysml.lang.sysml.FlowUsage |
143 | 143 | */ |
144 | 144 | class SysMLValidator extends KerMLValidator { |
145 | 145 |
|
| 146 | + public static val INVALID_DEFINITION_VARIATION_IS_ABSTRACT = "validateDefinitionVariationIsAbstract" |
| 147 | + public static val INVALID_DEFINITION_VARIATION_IS_ABSTRACT_MSG = "A variation must be abstract." |
146 | 148 | public static val INVALID_DEFINITION_VARIATION_MEMBERSHIP = "validateDefinitionVariationMembership" |
147 | 149 | public static val INVALID_DEFINITION_VARIATION_MEMBERSHIP_MSG = "An owned usage of a variation must be a variant." |
148 | 150 | public static val INVALID_DEFINITION_VARIATION_SPECIALIZATION = "validateDefinitionVariationSpecialization" |
149 | 151 | public static val INVALID_DEFINITION_VARIATION_SPECIALIZATION_MSG = "A variation must not specialize another variation." |
150 | 152 |
|
| 153 | + public static val INVALID_USAGE_VARIATION_IS_ABSTRACT = "validateUsageVariationIsAbstract" |
| 154 | + public static val INVALID_USAGE_VARIATION_IS_ABSTRACT_MSG = "A variation must be abstract." |
151 | 155 | public static val INVALID_USAGE_VARIATION_MEMBERSHIP = "validateUsageVariationMembership" |
152 | 156 | public static val INVALID_USAGE_VARIATION_MEMBERSHIP_MSG = "An owned usage of a variation must be a variant." |
153 | 157 | public static val INVALID_USAGE_VARIATION_SPECIALIZATION = "validateUsageVariationSpecialization" |
@@ -476,6 +480,11 @@ class SysMLValidator extends KerMLValidator { |
476 | 480 | // validateUsageIsReferential is satisfied automatically |
477 | 481 |
|
478 | 482 | if (usage.isVariation) { |
| 483 | + // validateUsageVariationIsAbstract |
| 484 | + if (!usage.isAbstract) { |
| 485 | + error(INVALID_USAGE_VARIATION_IS_ABSTRACT_MSG, usage, null, INVALID_USAGE_VARIATION_IS_ABSTRACT) |
| 486 | + } |
| 487 | + |
479 | 488 | // validateUsageVariationOwnedFeatureMembership |
480 | 489 | for (mem: usage.ownedFeatureMembership) { |
481 | 490 | // NOTE: Need to allow parameters and objectives because they are currently physically inserted by transform implementation. |
|
0 commit comments