Skip to content

Typeset used as target error type not marked as error #2604

@keh181

Description

@keh181

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

  1. 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;

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions