Check for uninitialized fields in templates
See "**4.1.3 Uninitialized field in templates**" **Problem statement:** In certain cases, optional template fields, being left uninitialized, are only noticed in runtime if the fields are ever used. The partial definition of a template can be a source of issues on execution. Currently T3Qv2 does not raise any error if a field is not initialized in a template. **New requirement specification:** Raise a warning on templates not fully defined regardless of the field not defined is optional. **Examples:** Not fully defined template _`cs_EventDefinitions_eventA1_Errors`_ that should raise warnings where fields are missing from its definition. ```ttcn3 module checkNoUninitializedFieldsInTemplates { //import from EXAMPLES_Definitions language "ASN.1:2002" all; //manually defined types type record EventDefinitions { EventIds eventIds, integer fieldint, boolean fieldbool, integer fieldextmandat, integer fieldextopt optional, boolean fieldextboolopt optional } //this is probably a union? type record EventId { A1 eventA1 } type record A1 { boolean fieldeventA1 } type record of EventId EventIds template ( value ) EventDefinitions cs_EventDefinitions_eventA1_Errors ( boolean p_FieldeventA1 := true , integer p_Fieldint := 0 , boolean p_Fieldbool := true , //integer p_Fieldextmandat := 1, integer p_Fieldextopt := 2 /*, template (omit) boolean p_Fieldextboolopt := omit */ ) := { eventIds := { eventA1 := { fieldeventA1 := p_FieldeventA1 } }, fieldint := p_Fieldint , fieldbool := p_Fieldbool , //fielextmandat := p_Fieldextmandat, -> missing field in not seen by T3Q fieldextopt := p_Fieldextopt //fieldextboolopt := p_Fieldextboolopt -> missing field in not seen by T3Q } //correct version: should not raise warinings template ( value ) EventDefinitions cs_EventDefinitions_eventA1 ( boolean p_FieldeventA1 := true , integer p_Fieldint := 0 , boolean p_Fieldbool := true, integer p_Fieldextmandat := 1 , integer p_Fieldextopt := 2 , template ( omit ) boolean p_Fieldextboolopt := omit ) := { eventIds := { eventA1 := { fieldeventA1 := p_FieldeventA1 } }, fieldint := p_Fieldint , fieldbool := p_Fieldbool , fieldextmandat := p_Fieldextmandat , fieldextopt := p_Fieldextopt , fieldextboolopt := p_Fieldextboolopt } } ```
issue