Closed reteprelief closed 8 years ago
For implementation see osate/osate2-core#372
To disambiguate the syntax for references to feature prototype vs. classifier prototype, we use the keyword prototype in the feature declaration when referring to the feature prototype. In the case of a reference to a classifier or classifier prototype we use the keyword feature.
prototypes
fproto: feature;
dt: data;
features
myfeature: prototype fproto;
myfeatureprotodata: feature dt;
myfeaturedatatype: feature mydatatype;
The grammar rule: `abstract_feature_spec ::= defining_abstract_feature_identifier : ( [ in | out ] feature [ featurecomponent_prototype_identifier | unique_component_classifier_reference ] ) | ( [ in | out ] prototype feature_prototype_identifier )
abstract_feature_refinement ::= ( defining_abstract_feature_identifier : refined to [ in | out ] feature [ featurecomponent_prototype_identifier | unique_component_classifier_reference ] ) | port_refinement | feature_group_refinement | subcomponent_access_refinement | parameter_refinement `
Issue: Abstract features can only refer to prototypes, not classifiers. We had it in V2 but it got accidentally removed in V2.1 when simplifying refinement to specific feature categories. Proposed correction: Allow classifier. Accepted 7/15.