@@ -90,6 +90,7 @@ import org.omg.sysml.lang.sysml.FeatureDirectionKind
9090import org.omg.sysml.lang.sysml.Metaclass
9191import org.omg.sysml.lang.sysml.Import
9292import org.omg.sysml.lang.sysml.VisibilityKind
93+ import org.omg.sysml.lang.sysml.Structure
9394
9495/**
9596 * This class contains custom validation rules.
@@ -180,6 +181,9 @@ class KerMLValidator extends AbstractKerMLValidator {
180181 public static val INVALID_CLASS_SPECIALIZATION = " validateClassSpecialization"
181182 public static val INVALID_CLASS_SPECIALIZATION_MSG = " Cannot specialize data type or association"
182183
184+ public static val INVALID_STRUCTURE_SPECIALIZATION = " validateStructureSpecialization"
185+ public static val INVALID_STRUCTURE_SPECIALIZATION_MSG = " Cannot specialize behavior"
186+
183187 public static val INVALID_ASSOCIATION_BINARY_SPECIALIZATION = " validateAssociationBinarySpecialization"
184188 public static val INVALID_ASSOCIATION_BINARY_SPECIALIZATION_MSG = " Cannot have more than two ends"
185189 public static val INVALID_ASSOCIATION_RELATED_TYPES = " validateAssociationRelatedTypes"
@@ -203,6 +207,9 @@ class KerMLValidator extends AbstractKerMLValidator {
203207 public static val INVALID_CONNECTOR_TYPE_FEATURING = " validateConnectorTypeFeaturing"
204208 public static val INVALID_CONNECTOR_TYPE_FEATURING_MSG = " Should be an accessible feature (use dot notation for nesting)"
205209
210+ public static val INVALID_BEHAVIOR_SPECIALIZATION = " validateBehaviorSpecialization"
211+ public static val INVALID_BEHAVIOR_SPECIALIZATION_MSG = " Cannot specialize structure"
212+
206213 public static val INVALID_PARAMETER_MEMBERSHIP_OWNING_TYPE = " validateParameterMembershipOwningType"
207214 public static val INVALID_PARAMETER_MEMBERSHIP_OWNING_TYPE_MSG = " Parameter membership not allowed"
208215
@@ -598,6 +605,16 @@ class KerMLValidator extends AbstractKerMLValidator {
598605 }
599606 }
600607
608+ @Check
609+ def checkStructure (Structure c ) {
610+ // validateStructureSpecialization
611+ for (s: c. ownedSpecialization) {
612+ if (s. general instanceof Behavior ) {
613+ error(INVALID_STRUCTURE_SPECIALIZATION_MSG , s, SysMLPackage . eINSTANCE. specialization_General, INVALID_STRUCTURE_SPECIALIZATION )
614+ }
615+ }
616+ }
617+
601618 @Check
602619 def checkAssociation (Association a ){
603620 // validateAssociationBinarySpecialization
@@ -733,6 +750,16 @@ class KerMLValidator extends AbstractKerMLValidator {
733750 }
734751 }
735752
753+ @Check
754+ def checkBehavior (Behavior b ) {
755+ // validateStructureSpecialization
756+ for (s: b. ownedSpecialization) {
757+ if (s. general instanceof Structure ) {
758+ error(INVALID_BEHAVIOR_SPECIALIZATION_MSG , s, SysMLPackage . eINSTANCE. specialization_General, INVALID_BEHAVIOR_SPECIALIZATION )
759+ }
760+ }
761+ }
762+
736763 @Check
737764 def checkParameterMembership (ParameterMembership m ) {
738765 if (! (m instanceof ReturnParameterMembership )) {
0 commit comments