Summary
Currently, no error marker is placed on a target of an error path when it is associated with a type set or multiple error types.
Expected behavior
OSATE to mark this as an error.
Actual behavior
No error marker is present.
Steps To Reproduce
- Copy and paste this model into OSATE
package pkg
public
device Sensor
features
SensorReading: out data port;
TestReading: out data port;
PowerSource: requires bus access;
annex EMV2 {**
use types ErrorLibrary;
error propagations
SensorReading: out propagation {ItemOmission, ServiceOmission};
PowerSource: in propagation {ItemOmission};
TestReading: out propagation {CommonErrors};
flows
ErrorSource: error source SensorReading {ItemOmission} when {SequenceError};
-- SensorReading should be marked with an error
ErrorPath: error path PowerSource->SensorReading {ItemOmission, ServiceOmission};
-- TestReading should be marked with an error
ErrorP: error path PowerSource->TestReading {CommonErrors};
end propagations;
**};
end Sensor;
end pkg;
package type_mappings
public
annex emv2 {**
type mappings ErrorTest
use types ErrorLibrary;
{ItemOmission} -> {CommonErrors}; -- should be marked as error
{ItemCommission} -> {ItemOmission, ItemCommission}; -- should be marked as error
end mappings;
**};
end type_mappings;
package composite_state
public
annex emv2 {**
error behavior EB
use types ErrorLibrary;
events
PoorValue: error event;
NoValue: error event;
states
Operational: initial state;
OperationalNonCritical: state {CommonErrors};
FailedState: state {CommonErrors};
transitions
tran1: Operational -[NoValue]->FailedState{ItemOmission};
end behavior;
**};
system s
annex EMV2 {**
use types ErrorLibrary;
use behavior composite_state::EB;
**};
end s;
system x
end x;
system implementation x.i
subcomponents
s1: system s;
s2: system s;
annex emv2 {**
use types ErrorLibrary;
use behavior composite_state::EB;
composite error behavior
states
[s1.OperationalNonCritical]->Operational{CommonErrors}; -- should be error
[s2.OperationalNonCritical]->Operational{ServiceError, EarlyService}; --should be error
[s1.OperationalNonCritical]->Operational{ServiceError}; -- fine
end composite;
**};
end x.i;
end composite_state;
package propagation_test
public
system s
features
InProp: in data port;
NewAirSpeed: out data port;
OutProp: out data port;
annex emv2{**
use types ErrorLibrary;
use behavior propagation_test::Simple;
error propagations
InProp: in propagation {CommonErrors};
NewAirSpeed: out propagation {BadValue, ServiceOmission};
OutProp: out propagation {CommonErrors};
end propagations;
component error behavior
propagations
Failed-[]->OutProp{CommonErrors}; -- should be error
Failed-[]->NewAirSpeed{BadValue, ServiceOmission}; -- should be error
Failed-[InProp{CommonErrors}]->OutProp{ServiceError}; -- good?
end component;
**};
end s;
annex EMV2 {**
error behavior Simple
events
Failure : error event;
states
Operational : initial state;
Failed : state;
transitions
FailureTransition : Operational -[ Failure ]-> Failed;
end behavior;
**};
end propagation_test;
package type_transformations
public
annex EMV2 {**
type transformations X
use types ErrorLibrary;
{NoError} -[{LateDelivery}]-> {CommonErrors}; --should be marked as error because it's a typeset
{NoError} -[{ServiceError}]-> {ServiceError, ItemTimingError}; -- should be marked with error
end transformations;
**};
end type_transformations;
Summary
Currently, no error marker is placed on a target of an error path when it is associated with a type set or multiple error types.
Expected behavior
OSATE to mark this as an error.
Actual behavior
No error marker is present.
Steps To Reproduce