Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing 'in' keyword for references to propagations in condition expression #2815

Open
joeseibel opened this issue Jun 2, 2022 · 0 comments

Comments

@joeseibel
Copy link
Contributor

The standard optionally allows for the keyword in to be used when referring to a propagation in a condition expression, but OSATE does not allow the in keyword.

In section E.8, the standard has the error_condition_trigger grammar rule which allows the in keyword:

error_condition_trigger ::=
  error_behavior_event_identifier [ error_type_set ]
  | [ in ] incoming_error_propagation_point [ error_type_set_or_noerror ]
  | subcomponent_identifier . outgoing_error_propagation_point [ error_type_set_or_noerror ]

Naming rule (N47) describes the purpose of the in keyword: "The incoming error propagation reference of an error condition trigger must identify an error propagation in the component that contains the error condition expression. The keyword in is used to qualify the error propagation reference, if it conflicts with a defining identifier of an error state or error behavior event."

The following model shows the intended purpose of the in keyword. Look at the transitions refer_to_event and refer_to_propagation:

package missing_in
public
  system s
    features
      conflict: feature;
    annex EMV2 {**
      use types ErrorLibrary;
      use behavior missing_in::machine1;

      error propagations
        conflict: in propagation {ServiceError};
      end propagations;

      component error behavior
        transitions
          refer_to_event: state1 -[conflict]-> state2;
          refer_to_propagation: state1 -[in conflict]-> state2;
      end component;
    **};
  end s;

  annex EMV2 {**
    error behavior machine1
      events
        conflict: error event;
      states
        state1: initial state;
        state2: state;
    end behavior;
  **};
end missing_in;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant